到现在,我们一共建了3个项目:user-dao ,user-service,user-web
通过这3个项目,这一篇主要介绍:Maven聚合与 继承特性
Maven聚合
将项目整合到一起,统一管理
建一个Maven工程, 没有骨架的。
只需要里面的pom.xml文件就可以。
在生成的pom.xml中添加:
<modules>
<module>../user-dao</module>
<module>../user-service</module>
</modules>
将user-dao 与 user-service聚合到了一起。例如可以统一执行mvn clean等命令。
右键 run as clean
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] user-dao [jar]
[INFO] user-service [jar]
[INFO] user-aggregator [pom]
[INFO]
[INFO] -----------------------< com.java.user:user-dao >-----------------------
[INFO] Building user-dao 0.0.1-SNAPSHOT [1/3]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ user-dao ---
[INFO] Deleting C:\Users\sherlock\Documents\gao jishu\Eclipse_Photon\workspace_maven\user-dao\target
[INFO]
[INFO] ---------------------< com.java.user:user-service >---------------------
[INFO] Building user-service 0.0.1-SNAPSHOT [2/3]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ user-service ---
[INFO] Deleting C:\Users\sherlock\Documents\gao jishu\Eclipse_Photon\workspace_maven\user-service\target
[INFO]
[INFO] -------------------< com.java.user:user-aggregator >--------------------
[INFO] Building user-aggregator 0.0.1-SNAPSHOT [3/3]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ user-aggregator ---
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] user-dao ........................................... SUCCESS [ 0.415 s]
[INFO] user-service ....................................... SUCCESS [ 0.036 s]
[INFO] user-aggregator 0.0.1-SNAPSHOT ..................... SUCCESS [ 0.002 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.659 s
[INFO] Finished at: 2018-08-14T15:06:50+08:00
[INFO] ------------------------------------------------------------------------
3个项目都执行了 mvn clean.
Maven继承特性
管理了很多项目,每个项目pom.xml的依赖都很多,每一个依赖都有不同的版本等,这个时候版本管理也就显得很重要了。
按照上面的步骤,建一个叫 user-parent 的无骨架的项目。
可以把user-dao等项目pom.xml相同的部分抽取出来,放在parent的pom文件中。
<groupId>com.java.user</groupId>
<artifactId>user-dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
比如说上面的 除了artifactId不同其他的都一样,抽取出来
<parent>
<groupId>com.java.user</groupId>
<artifactId>user-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../user-parent/pom.xml</relativePath>
</parent>
<artifactId>user-dao</artifactId>
<packaging>jar</packaging>
继承parent的这些东西,不同的重写。
这个时候运行一下项目:(user.dao里面的mappers包,不要放到src/main/java下,应放到src/main/recourses下,不然会报错,以后统一都放到这个路径下)
接下来,对依赖进行统一管理。
在parent的pom.xml中:
<dependencyManagement>
<dependencies>
<!-- 放所有子项目的所有依赖 -->
</dependencies>
</dependencyManagement>
这个时候子项目的版本信息就可以不用写了,这样方便了统一管理版本信息。
把重复的可以去掉。这样就可以实现所有子项目版本的一致。
而在parent的pom.xml文件中,不如spring的jar包有很多,版本信息一样,当我们要修改时,就必须把所有的都要更改,这个时候我们可以在进行抽取:
<properties>
<spring.version>4.1.7.RELEASE</spring.version>
</properties>
在下面spring版本信息出现的地方全都用定义的参数代替:
<version>${spring.version}</version>
原则上我们要把全部版本信息全抽取出来,方便统一管理。
继承和聚合可以放在一起的:
将:
<!-- 聚合 -->
<modules>
<module>../user-dao</module>
<module>../user-service</module>
</modules>
放到parent.xml中即可。