maven 学习笔记

来源:互联网 发布:骑士巡游算法 编辑:程序博客网 时间:2024/05/22 08:04

MAVEN的核心是pom.xml,pom定义了项目的基本信息。

maven的坐标:maven世界中拥有大量的构件,为每一个构件都定义了唯一的坐标标识。

定义一个项目的基本坐标,需要:

groupId(定义了项目隶属的实际项目),

artifactId(定义了当前maven在组中的唯一id),

version(定义了当前项目的版本),(以上为必写)

package(定义了打包方式)默认为Jar,(可选)

classifier(帮助定义构建输出的一些附属构件)(不可以直接定义)

scm 使用来to commit the modified sources  应该是用来获取资源,更新版本的

extensions used for the transport of artifact between repositories, and plug-ins which provide lifecycle enhancements.


配置依赖:

groupId,artifactId,version

type:依赖的类型,对应于package,默认为Jar

scope:依赖的范围

optional:标记依赖是否可选

exclusions:排除传递性依赖


依赖范围:

编译的时候用一套classpath(叫编译classpath)

测试的时候用一套classpath(叫测试classpath)

运行的时候用一套classpath(叫运行classpath)

依赖范围就是用来控制依赖与这三种范围的关系:

compile 默认的范围,对编译,测试,依赖都有效

test 只对测试classpath有效

provided 对编译和测试classpath有效

runtime对运行时classpath有效

system 系统依赖范围,范围和provided一样,是根据本地系统绑定的,所有可移植性可能不会很好


传递依赖

当第二直接依赖为compile时,传递依赖范围为第一依赖的范围

当第二直接依赖为test时,依赖不会传递

当第二直接依赖为provided时,只会传递Privide依赖

当第二直接依赖为runtime时,传递依赖范围为第一依赖的范围


依赖调解:

1.路径最近者优先

2.第一声明者优先


可选依赖:

当2个依赖不可以共存的是,可用可选依赖

<optional>true<optional>

<optional>false<optional>