pom.xml的基础元素,通过该元素管理项目对第三方包的一些依赖。Maven会根据你在这个元素中定义的一些包的依赖下载到本地仓库,并让项目使用。保证我们的项目能正确的构建和布署。dependencies下有dependency元素,指定项目依赖的某个包。
dependency元素说明
groupId, artifactId,version:引用的包的groupId, artifactId, version
type:指定依赖的这个项目类型,是jar包还是其他类型的包,默认为jar。
optional: 如果只是为了满足本项目编译, 或者在运行时不需要该包时, 可以将optional设为true, 那么如果再有其他项目引用本项目时, 这个包将不依赖进来。
classifier:用于区别jdk的版本,有些包用不同的jdk,并有不同的后缀让我们选择,我们可以加上这个分类器。例如:bouncycastle/bcprov-jdk15/135/bcprov-jdk15-135.jar
systemPath:用于指定包的具体所在位置。当scope为system时设置。
scope:该依赖所适用的范围。scope有如下的值:
compile,默认值,适用于所有阶段,会随着项目一起发布。
provided,类似compile,期望容器或使用者会提供这个依赖。
runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 编译时不会使用该包。
test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
dependency元素说明
groupId, artifactId,version:引用的包的groupId, artifactId, version
type:指定依赖的这个项目类型,是jar包还是其他类型的包,默认为jar。
optional: 如果只是为了满足本项目编译, 或者在运行时不需要该包时, 可以将optional设为true, 那么如果再有其他项目引用本项目时, 这个包将不依赖进来。
classifier:用于区别jdk的版本,有些包用不同的jdk,并有不同的后缀让我们选择,我们可以加上这个分类器。例如:bouncycastle/bcprov-jdk15/135/bcprov-jdk15-135.jar
systemPath:用于指定包的具体所在位置。当scope为system时设置。
scope:该依赖所适用的范围。scope有如下的值:
compile,默认值,适用于所有阶段,会随着项目一起发布。
provided,类似compile,期望容器或使用者会提供这个依赖。
runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 编译时不会使用该包。
test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
system,类似provided,需要显式提供包含依赖的jar,maven不会在Repository中查找它,将会去systemPath中查找。并不会随项目发布。
2.
1.<distributionManagement>的基本配置
说明:
- downloadUrl,一个URL,其他Maven项目可以通过该URL下载并引用当前Maven项目的构件。注意区别本文下面的<repository>中的URL,<repository>中的URL给出了当前Maven项目的构件的发布URL。
- status,当前Maven项目的状态,可用的状态如下所示。注意,该值是由Maven自动设置,永远不要人工设置。
- none,未指明状态,默认值
- converted,该Maven项目的构件已经被转换为兼容Maven 2
- partner,该Maven项目的构件保持与另一个库的Maven版本一致
- deployed,该Maven项目的构件是通过Maven 2或Maven 3发布的,最常用的值
- verified,该Maven项目的构件已经被验证过
2.<distributionManagement>的<repository>配置
给出Maven部署当前项目的构件到远程库时,关于远程库的配置。示例如下:
具体配置参数,参考前文。
3. <distributionManagement>的<site>配置
除了部署当前Maven项目的构件,还可以部署当前Maven项目的网站和文档。示例如下:
这里的配置参数与<repository>中的对应配置参数一致。
4. <distributionManagement>的<relocation>配置
随着一个Maven项目的发展壮大,该Maven项目的构件可能需要重新发布到新的库。<relocation>可以将当前Maven项目以新的构件的形式发布到另一个库。示例如下: