标签:mode project 情况 子项目 man pom res 出现 包含
继承是 Maven 中很强大的一种功能,继承是为了抽取多个模块的公共配置,以实现统一/简化配置的目的。
父 POM 中的大多数元素都能被子 POM 继承。除了以下元素外,其它元素均可被子模块继承:
继承可以有效的避免多个子模块使用依赖版本不一致的情况, 有助于降低依赖冲突的几率.
父 pom 中的大多数元素都能被子 pom 继承, 在简化 pom 的同时, 还能够促进各个模块配置的一致性。
父项目中定义<dependencies>
,子项目直接继承了父项目的
在 父 pom 中
关于<dependencyManagement>
用法:
<dependencyManagement>
<dependencies>
<dependency><!-- 定义可能会使用的依赖 -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>my-parent</artifactId>
<version>2.0</version>
</dependency>
<dependecy>...</dependecy><!-- 定义可能会使用的依赖 -->
<dependecy>...</dependecy><!-- 定义可能会使用的依赖 -->
</dependencies>
</dependencyManagement>
不需要定义版本号, 只用填写<groupId>
和<artifactId>
表示继承父项目的声明,
否则 maven 是不会加载父模块中声明的声明。
<dependencies>
<dependency>
<groupId>org.codehaus.mojo</groupId> <!-- 引用父pom的声明 -->
<artifactId>my-parent</artifactId>
<!-- 不需要指定版本信息! -->
</dependency>
</dependencies>
简单来说,我们写两个不同的功能那么我们需要建两个不同的 Maven Project** ,那么我们需要配置两次 pom 文件,它们可能有大部分依赖是相同的,我们也要重复配置。如果功能更多呢?我们需要重复配置很多相同的东西,父子工程的出现就大大的简化了这些。我们抽取公共配置放在父项目,而子项目可以继承父项目的配置,这样大大简化了配置**
注意: 子项目不一定非要在父项目里面,也可以和父项目是平级关系。
①正常创建一个Maven Project ,作为父项目。完成可去掉 java 和 resources。
②创建一个Maven Project,在它的pom文件中指明它的父项目是谁?使用parent元素,如下实例:
<!-- 指定它的父模块是谁 -->
<parent>
<groupId>org.codehaus.mojo</groupId>
<artifactId>my-parent</artifactId>
<version>2.0</version>
<relativePath></relativePath>
</parent>
<relativePath>
元素用于指明本项目(子项目)的父项目的 pom 文件的路径名。例如:
<!-- 对应写法,在硬盘上的目录层次结构中,子模块在父模块的『里面』。 -->
<relativePath>../pom.xml</relativePath>
<!-- 对应写法,在硬盘上的目录层次结构中,子模块和父模块『平级』。 -->
<relativePath>../parent-module/pom.xml</relativePath>
<!-- 对应写法,Maven 就不关心子模块和父模块在硬盘上的目录层次结构,它要求父模块在本地仓库中存在 -->
<relativePath />
如果完全没有<relativePath>
元素,等同于:../pom.xml
注意: 子项目不一定非得新建在父项目内。所以,默认的 ../pom.xml 并一定总是对的。
Maven 聚合 功能是 继承 功能的『升级』。
即,Maven 多模块项目一定是父子项目,Maven 父子项目则不一定是多模块项目。
由于 Maven 多模块项目是父子项目的一种高级形式,因此,多模块项目也是有一个父模块包含一个或多个子模块,不过有几点不同:
多模块项目中,子项目一定是在父项目『里面』的。
<modules>
<module>modele1-service</module> <!--指定的子项目1-->
<module>modele2-web</module> <!--指定的子项目2-->
<module>bbb</module> <!--指定的子项目3-->
</modules>
在父模块的pom.xml中添加tomcat7的插件,然后正常的运行和安装即可。tomcat7不要放在子模块的pom.xml身上,不然运行不了。
标签:mode project 情况 子项目 man pom res 出现 包含
原文地址:https://www.cnblogs.com/whitespaces/p/11745650.html