1 项目结构
project
|——module1(<packaging>jar</packaging>)
|——module2(<packaging>war</packaging>)
|——module3(<packaging>jar</packaging>)
|——module4(<packaging>pom</packaging>)
|——sub_module1(<packaging>jar</packaging>)
|——sub_module2(<packaging>jar</packaging>)
|——sub_module3(<packaging>jar</packaging>)
|——pom.xml (<packaging>pom</packaging>)
|——pom.xml (<packaging>pom</packaging>)
pom.xml (<packaging>pom</packaging>)
2 各结构pom文件格式
project.pom文件
<groupId>com.cx</groupId>
<artifactId>cx</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<cx.version>1.0.0-SNAPSHOT</cx.version>
...
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.cx</groupId>
<artifactId>module1</artifactId>
<version>${cx.version}</version>
</dependency>
<dependency>
<groupId>com.cx</groupId>
<artifactId>module2</artifactId>
<version>${cx.version}</version>
</dependency>
<dependency>
<groupId>com.cx</groupId>
<artifactId>module3</artifactId>
<version>${cx.version}</version>
</dependency>
<!-- module4 的打包格式是pom,所以直接引module4的子模块依赖,如下 -->
<dependency>
<groupId>com.cx</groupId>
<artifactId>sub_module1</artifactId>
<version>${cx.version}</version>
</dependency>
<dependency>
<groupId>com.cx</groupId>
<artifactId>sub_module2</artifactId>
<version>${cx.version}</version>
</dependency>
<dependency>
<groupId>com.cx</groupId>
<artifactId>sub_module3</artifactId>
<version>${cx.version}</version>
</dependency>
<dependency>
<groupId>com.cx</groupId>
<artifactId>sub_module4</artifactId>
<version>${cx.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
【注:】
表达式${project.version}表示项目(而非模块)的version值,直接应用即可,不需要properties标签注册
表达式${...}可以向下传递,各个模块或子模块可用直接应用
module4.pom文件
<parent>
<groupId>com.cx</groupId>
<artifactId>cx</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<!-- 自动跟随parent的version,即1.0.0.SNAPSHOT -->
<artifactId>module4</artifactId>
<modules>
<module>sub_module1</module>
<module>sub_module2</module>
<module>sub_module3</module>
</modules>
sub_module3.pom文件
<parent>
<groupId>com.cx</groupId>
<artifactId>module4</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<!-- 自动跟随parent的version,即1.0.0.SNAPSHOT -->
<artifactId>sub_module2</artifactId>
<dependencies>
<dependency>
<groupId>com.cx</groupId>
<artifactId>sub_module1</artifactId>
</dependency>
<dependency>
<groupId>com.cx</groupId>
<artifactId>module1</artifactId>
</dependency>
...
</dependencies>
3 总结
项目的pom还有其它引入方式,此处引入的是实际开发中用到的一种比较合理和易读的方式。也有些方式不会把module的依赖引到project.pom,此时如果module1依赖module2,则要在module1.pom中引入module2的依赖时加上version