项目开发时,通常会将项目分为多个模块进行开发,本文讨论如何用Maven构建多模块的Java工程。
Java:1.6.0_26
Maven:3.1.1
OS:WindowXP SP3
示例工程分为多个模块,分别是:
多模块项目整体构建使用Maven的父子继承能力。
首先创建工程和各模块,然后配置各模块之间的依赖关系。
项目的对第三方构件的依赖关系配置在父工程的pom.xml中,这样各模块可以省去第三方构件的依赖配置。
首先创建父工程应用
mvn archetype:create -DgroupId=com.github.hubin0011 -DartifactId=research_maven_javamm -DarchetypeArtifactId=maven-archetype-quickstart
创建成功后,需要将父工程类型改为Maven的父工程,修改pom.xml文件的packaging属性为pom,如下:
pom
父工程创建成功后,创建各模块工程。
注意:创建各模块工程时,要先cd到父工程的根目录:
cd research_maven_javamm
mvn archetype:create -DgroupId=com.github.hubin0011 -DartifactId=app -DarchetypeArtifactId=maven-archetype-quickstart
mvn archetype:create -DgroupId=com.github.hubin0011 -DartifactId=module-a -DarchetypeArtifactId=maven-archetype-quickstart
mvn archetype:create -DgroupId=com.github.hubin0011 -DartifactId=module-b -DarchetypeArtifactId=maven-archetype-quickstart
mvn archetype:create -DgroupId=com.github.hubin0011 -DartifactId=module-com -DarchetypeArtifactId=maven-archetype-quickstart
app
module-a
module-b
module-com
创建各模块工程后,需要对各模块工程之间的依赖关系进行配置。如之前说明的模块依赖关系:
修改ModuleA的pom.xml文件,添加ModuleCom的依赖:
com.github.hubin0011
module-com
1.0-SNAPSHOT
修改ModuleB的pom.xml文件,添加ModuleCom的依赖:
com.github.hubin0011
module-com
1.0-SNAPSHOT
修改app的pom.xml文件,添加ModuleA、ModuleB和ModuleCom的依赖:
com.github.hubin0011
module-a
1.0-SNAPSHOT
com.github.hubin0011
module-b
1.0-SNAPSHOT
com.github.hubin0011
module-com
1.0-SNAPSHOT
在模块工程的目录,执行如下脚本可以编译该模块工程:
mvn clean compile
在父工程的目录,执行如下脚本则编译整个工程:
mvn clean compile
在模块工程的目录,执行如下脚本可以运行该模块工程的单体测试:
mvn clean test
在父工程的目录,执行如下脚本则运行整个工程的单体测试:
mvn clean test
在模块工程的目录,执行如下脚本可以打包该模块:
mvn clean package
在父工程的目录,执行如下脚本则打包所有模块,在各模块的target目录会生成相应的jar构件:
mvn clean package
在模块工程的目录,执行如下脚本可以发布该模块工程到本地仓库:
mvn clean install
在父工程的目录,执行如下脚本则发布整个工程到本地仓库:
mvn clean install
本文的示例工程可以从http://github.com/hubin0011/research/tree/master/maven/java_mm下载。