Maven 多模块聚合

博客已转至: http://www.muxuanli.com/lmx/

【聚合】类似的多个模块的项目,我们在构建时,会希望一次构建完成,而不是每个模块都执行mvn命令。Maven的聚合特性可是实现此需求。
【继承】在parent项目中定义一些依赖,可以避免在其它子项目中重复定义,其<packaging>的值也是 pom

以admin项目为例   包括version配置等信息

admin-common   主要是POJO entity vo 等
admin-biz             主要进行一些业务操作(依赖biz)
admin-web           web项目  依赖common/biz
admin-parent       主要是定义项目中依赖的jar包的版本等,用于继承

在以上四个目录之上,可以构建一个新的项目admin,该项目只有一个pom文件,其特殊之处在于:
1. <packaging>的值 是 pom , 而不是默认的jar
2. 使用了modules元素,实现多模块的聚合


admin
        --- admin-common
        --- admin-biz
        --- admin-web
        --- admin-parent
        --- pom.xml 

step1  建立总的聚合文件夹 admin,里面只有一个 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.lmx.test</groupId>
  <artifactId>admin</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Admin Project</name>
</project>


step2  在admin目录下建立parent项目,里面也只有一个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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.lmx.test</groupId>
  <artifactId>admin-parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Admin Parent</name>
</project>



step3 分别创建common,biz,web项目

以common项目为例:在admin目录下执行mvn命令:
mvn archetype:generate -DgroupId=com.lmx.test -DartifactId=admin-common -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false


创建admin-web项目:
mvn archetype:generate -DgroupId=com.lmx.test -DartifactId=admin-web -DarchetypeArtifactId=maven-archetype-webapp -DinteractivMode=false



查看admin-common的pom文件,已经继承了parent:

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.lmx.test</groupId>
    <artifactId>admin</artifactId>
    <version>0.0.1-SNAPSHOT</version>

  </parent>
  <groupId>com.lmx.test</groupId>
  <artifactId>admin-common</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>admin-common</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>


其中 groupId version等是可以继承的,所以可以删除掉!


查看admin下的pom文件:modules元素下已自动加入了3个子模块
<?xml version="1.0" encoding="UTF-8"?>
<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>
  <groupId>com.lmx.test</groupId>
  <artifactId>admin</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Admin Project</name>
  <modules>
    <module>admin-common</module>
    <module>admin-biz</module>
    <module>admin-web</module>
  </modules>
</project>



step4 eclipse引入
 

猜你喜欢

转载自lijiejava.iteye.com/blog/2308546