一、继承方式
分别创建三个项目fu、ca、cb。fu作为父项目,ca、cb、cp作为子项目
fu创建时打包方式为pom;
ca、cb创建时打包方式为jar;
cp创建时打包方式为war(主要看插件是否也跟着继承过来)
fu项目的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xx</groupId>
<artifactId>fu</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging><!-- 打包方式为pom -->
<!-- 统一管理子项目的jar包,用 <dependencyManagement> -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<!-- 统一管理子项目的插件,用 <pluginManagement> -->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version> <!-- 需要带版本号 -->
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
ca项目的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.xx</groupId>
<artifactId>fu</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <!--本例中此处是可选的-->
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ca</artifactId>
<dependencies>
<!-- 父项目用了 <dependencyManagement> 所以
子项目这块需要手动引入一下相同的jar,但是不需要写版本号,写版本号就以子的本版为准-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<!--此处不再需要verison了!-->
</dependency>
<dependency>
<!--当然也可以加入只在这个子模块中用到的jar包-->
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-lgpl</artifactId>
<version>1.9.4</version>
</dependency>
</dependencies>
</project>
cb项目的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.xx</groupId>
<artifactId>fu</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <!--本例中此处是可选的-->
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cb</artifactId>
<dependencies>
<dependency>
<groupId>com.xx</groupId>
<artifactId>ca</artifactId> <!--加上ca的所有依赖,需要install项目ca-->
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
cp项目的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.xx</groupId>
<artifactId>fu</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <!--本例中此处是可选的-->
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cp</artifactId>
<packaging>war</packaging>
<!-- 插件就不需要引入了 -->
</project>
二、聚合方式
分别创建三个项目fuproject、cap、cbp、cpp。fuproject作为父项目,cap、cbp、cpp作为子模块
fu创建时打包方式为pom;
cap、cbp创建时打包方式为jar;
cpp创建时打包方式为war(主要看插件是否也跟着继承过来)
fuproject项目的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xx</groupId>
<artifactId>fuproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>cap</module>
<module>cbp</module>
<module>cpp</module>
</modules>
<dependencies>
<dependency>
<!--添加一个jar包依赖-->
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
</plugin>
</plugins>
</build>
</project>
cap项目的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 引入父坐标 -->
<parent>
<groupId>com.xx</groupId>
<artifactId>fuproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<!-- 自己的坐标 -->
<artifactId>cap</artifactId>
<dependencies>
<!--
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
-->
<!-- 父项没用 <dependencyManagement> 所以 子项目这块可以不写,但是也会被引入,
如果写了,版本号以子项目的为主-->
<dependency>
<!--当然也可以加入只在这个子模块中用到的jar包-->
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-lgpl</artifactId>
<version>1.9.4</version>
</dependency>
</dependencies>
</project>
cbp项目的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 引入父坐标 -->
<parent>
<groupId>com.xx</groupId>
<artifactId>fuproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<!-- 自己的坐标 -->
<artifactId>cbp</artifactId>
<dependencies>
<dependency>
<groupId>com.xx</groupId>
<artifactId>cap</artifactId> <!--加上cap的所有依赖,需要install项目cap-->
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
cpp项目的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 引入父坐标 -->
<parent>
<groupId>com.xx</groupId>
<artifactId>fuproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<!-- 自己的坐标 -->
<artifactId>cpp</artifactId>
<packaging>war</packaging>
<!-- 插件就不需要引入了 -->
</project>
注意:
1、无论继承还是聚合
如果父pom中使用的是
<dependencies>....</dependencies>
的方式,则子pom会自动使用pom中的jar包;
如果父pom使用
<dependencyManagement>
<dependencies>....</dependencies>
</dependencyManagement>
方式,则子pom不会自动使用父pom中的jar包,这时如果子pom想使用的话,就要给出groupId和artifactId,无需给出version
网友评论