Maven常用标签及作用
Maven常用标签及作用
parent标签
- 依赖管理:父POM可以定义一组共享的依赖项(
dependencies
标签中定义的内容),这样所有子项目可以继承这些依赖项而无需在每个子项目的pom.xml中重复声明。 - 统一配置:父POM可以设置一些通用的配置,比如构建插件、报告插件、项目构建路径等,这样可以确保所有子项目遵循相同的构建规则。
- Example
父POM
子POM
在这个例子中,子项目继承了父项目中的构建插件配置,如maven-compiler-plugin和maven-surefire-plugin,确保所有子项目遵循相同的构建规则。
- 版本控制:通过在父POM中定义依赖版本,可以更容易地管理整个项目树中的依赖版本,避免版本冲突。
- Example
父POM
子POM
在这个例子中,父项目使用属性来管理依赖版本,子项目继承这些属性,从而确保所有子项目的依赖版本一致,避免版本冲突。
parent标签的relativePath子标签:用于指定父POM的位置,如果留空或设置为..
,Maven会在本地仓库中查找父POM;如果指定了一个路径,Maven会尝试从该路径加载父POM。
dependencies和dependencyManagement,以及两者的区别
dependencies标签
dependencies节点用于声明项目直接依赖的库,这些依赖会被实际下载并添加到项目的类路径中,用于编译、测试和运行。
dependencyManagement标签
dependencyManagement节点用于集中管理依赖的版本和其它配置信息,它不会直接将依赖添加到类路径中,而是提供了一种方式来集中管理依赖版本和其它配置信息。
注意:在jar
类型的项目中该标签没有意义。
packaging标签
packaging标签用于指定项目的打包类型,这个标签告诉Maven该项目最终应该被打包成什么形式。
常用类型及用途:
- jar:默认的打包类型,用于创建Java应用程序的标准JAR文件。通常用于库或内部服务。
- war:用于创建Web应用程序的标准WAR文件。这种类型的项目最终会被打包成一个可以部署到如Tomcat、Jetty等Web容器上的WAR文件。
- pom:用于创建项目对象模型(POM)文件,通常作为其它项目的父项目。POM项目本身不会被打包成任何类型的文件,主要用于管理其它项目的依赖和配置。
scope标签中import、type标签中pom的用法
用法一
当一个父pom中的dependencyManagement标签中需要导入另一个pom中的dependencyManagement的时候,必须同时使用
scope>import</scope和type>pom</type
例子
注:这是为了解决pom
类型的父工程单继承的问题。
用法二
当需要把一些依赖定义到一个pom工程中,但是由于maven单继承机制,子工程又想通过依赖引入该pom工程中的所有依赖,只需要添加type>pom</type
例子
注:这是为了解决子工程单继承的问题,通过type>pom</type可以依赖其它的pom父工程,从而将pom工程中的依赖都传递过来。type默认是jar
,依赖jar工程时可以不写type标签,所以如果依赖于一个jar工程,而jar工程中包含大量的依赖,也会一起传递过来,这也就是maven依赖传递的原理。