使用Maven对项目进行管理的时候,多模块的继承和聚合是必不可少的,本文简要说明一下在eclipse IDE下创建多模块工程。
1.Maven多模块的聚合
一个Maven工程下创建多个模块,然后用一个专门管理模块来将实际应用到的模块组织起来。
2.Maven多模块的继承
子模块通过继承父模块,来获的父模块中的pom.xml配置信息。
3.Maven多模块的继承+聚合
上图是将1和2组合起来,可以将父模块作为聚合模块和父模块,这样父模块就可以聚合(组织)其子模块,子模块可以继承父模块。
4.聚合和继承的关系
区别 :
对于聚合模块来说,它知道有哪些被聚合的模块,但被聚合模块相互独立。
对于继承关系的父POM来说,它不知道有哪些子模块继承它,但那些子模块都必须知道自己的父POM。
共同点 :
聚合 POM与继承关系中的父POM的packaging都是pom。
聚合模块与继承关系中的父模块除了POM之外都没有实际的内容。
5.使用Eclipse来搭建一个集成聚合和继承的工程
5.1创建一个Maven工程,其作为聚合模块
1
2
3
4
5
6
7
|
<
groupId
>secondriver</
groupId
>
<
artifactId
>code-parent</
artifactId
>
<
version
>0.0.1-SNAPSHOT</
version
>
<
packaging
>pom</
packaging
>
<
name
>code-parent</
name
>
<
url
>http://maven.apache.org</
url
>
|
5.2创建JavaSE的Maven模块(code-utils,图中为code-utilss),并选择上面code-parent工程作为父工程.
5.3同上,创建JavaWeb的Maven模块(code-web),并选择上面的code-parent工程作为符工程。
5.4 Eclipse中的目录结构图
途中有三个工程,准确的说code-parent是maven工程,code-utils,code-web是code-parent工程下的两个模块;code-parent对其进行了聚合,code-utils,code-web继承了code-parent.
本地文件系统的目录结构:
code-parent下的pom文件即为父pom.xml,code-utils和code-web下的pom.xml继承该pom.xml.
5.5 code-parent的pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<
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
>secondriver</
groupId
>
<
artifactId
>code-parent</
artifactId
>
<
version
>0.0.1-SNAPSHOT</
version
>
<
packaging
>pom</
packaging
>
<
name
>code-parent</
name
>
<
url
>http://maven.apache.org</
url
>
<
modules
>
<
module
>code-utils</
module
>
<
module
>code-web</
module
>
</
modules
>
<
properties
>
<
project.build.sourceEncoding
>UTF-8</
project.build.sourceEncoding
>
<
project.reporting.outputEncoding
>UTF-8</
project.reporting.outputEncoding
>
<
junit.version
>4.10</
junit.version
>
</
properties
>
<
description
>
这是父模块,对子模块进行了集成,子模块对该模块进行了继承。主要作用是对公共配置的统一管理
</
description
>
<
dependencies
>
<
dependency
>
<
groupId
>junit</
groupId
>
<
artifactId
>junit</
artifactId
>
<
version
>${junit.version}</
version
>
<
scope
>test</
scope
>
</
dependency
>
</
dependencies
>
<
dependencyManagement
>
<
dependencies
></
dependencies
>
</
dependencyManagement
>
</
project
>
|
配置中packaging的值是pom,说明code-parent是一个聚合模块或者父模块,这里其属于两者。modules下配置了两个模块分别就是code-utils和code-web.
5.6code-utils和code-web的pom.xml
code-parent/code-utils/pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
|
<
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
>secondriver</
groupId
>
<
artifactId
>code-parent</
artifactId
>
<
version
>0.0.1-SNAPSHOT</
version
>
</
parent
>
<
artifactId
>code-utils</
artifactId
>
<
name
>code-utils</
name
>
</
project
>
|
配置中默认的packaging的值为jar。
code-parent/code-web/pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?
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
>secondriver</
groupId
>
<
artifactId
>code-parent</
artifactId
>
<
version
>0.0.1-SNAPSHOT</
version
>
</
parent
>
<
artifactId
>code-web</
artifactId
>
<
packaging
>war</
packaging
>
<
name
>code-web Maven Webapp</
name
>
<
url
>http://maven.apache.org</
url
>
<
build
>
<
finalName
>code-web</
finalName
>
</
build
>
</
project
>
|
至此通过Eclipse创建多模块的Maven工程已完成。至于pom.xml如何配置,就另当别论了,关于maven的pom.xm
本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1596192,如需转载请自行联系原作者