用一条命令同时构件 A、B两个项目
这个时候需要将 A、B 聚合成一个 C 工程
C 工程是一个聚合项目,也是一个 Maven 项目,有自己的 POM。如下
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.taotao</groupId> <artifactId>taotao-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.taotao</groupId> <artifactId>taotao-manager</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <!-- 依赖管理 --> <dependencies> <dependency> <groupId>com.taotao</groupId> <artifactId>taotao-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> <modules> <module>taotao-manager-pojo</module> <module>taotao-manager-mapper</module> <module>taotao-manager-service</module> <module>taotao-manager-web</module> </modules> <build> <!-- 配置插件 --> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <port>8080</port> <path>/</path> <!--<url>http://192.168.25.135:8080/manager/text</url>--> <!--<username>tomcat</username>--> <!--<password>tomcat</password>--> </configuration> </plugin> </plugins> </build> </project>
模块化的 A、B 工程和普通工程没啥区别
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.taotao</groupId> <artifactId>taotao-manager</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>taotao-manager-web</artifactId> <packaging>war</packaging> <!-- 依赖管理 --> <dependencies> <dependency> <groupId>com.taotao</groupId> <artifactId>taotao-manager-service</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!-- JSP相关 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <scope>provided</scope> </dependency> <!-- 文件上传组件 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> </dependency> </dependencies> </project>
只需要添加一个 parent 即可
聚合工程仅仅是帮助聚合其他模块构建的工具,本身并无实质内容。
聚合模块和其他模块的目录结构不一定非要是父子关系,平行结构也行,只要在 module 标签中,聚合工程能够正常指向模块工程就行了
继承
聚合解决了多模块构建的问题,继承则是为了解决重复配置的问题
对于一些各个模块都要用到的依赖,可以配置在父工程,然后被继承即可