博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven的POM简单理解
阅读量:4965 次
发布时间:2019-06-12

本文共 9971 字,大约阅读时间需要 33 分钟。

以下引用自官方的POM介绍:

一、什么是POM?

项目对象模型或POM是Maven的基本工作单元。它是一个XML文件,其中包含有关Maven用于构建项目的项目和配置详细信息。它包含大多数项目的默认值。示例是构建目录,即target;这是源目录src/main/java;测试源目录src/test/java;等等。

POM已从Maven 1中的project.xml重命名为Maven 2中的pom.xml。而不是具有包含可执行目标的maven.xml文件,目标或插件现在已在pom.xml中配置。执行任务或目标时,Maven会在当前目录中查找POM。它读取POM,获取所需的配置信息,然后执行目标。

可以在POM中指定的一些配置是项目依赖性,可执行的插件或目标,构建配置文件等。还可以指定其他信息,如项目版本,描述,开发人员,邮件列表等。

二、超级POM

超级POM是Maven的默认POM。所有POM扩展超级POM,除非明确设置,这意味着超级POM中指定的配置由您为项目创建的POM继承。下面的代码片段是Maven 2.0.x的超级POM。

1 
2
4.0.0
3
Maven Default Project
4 5
6
7
central
8
Maven Repository Switchboard
9
default
10
http://repo1.maven.org/maven2
11
12
false
13
14
15
16 17
18
19
central
20
Maven Plugin Repository
21
http://repo1.maven.org/maven2
22
default
23
24
false
25
26
27
never
28
29
30
31 32
33
target
34
target/classes
35
${artifactId}-${version}
36
target/test-classes
37
src/main/java
38
src/main/scripts
39
src/test/java
40
41
42
src/main/resources
43
44
45
46
47
src/test/resources
48
49
50
51 52
53
target/site
54
55 56
57
58
release-profile
59 60
61
62
performRelease
63
64
65 66
67
68
69
true
70
org.apache.maven.plugins
71
maven-source-plugin
72 73
74
75
attach-sources
76
77
jar
78
79
80
81
82
83
true
84
org.apache.maven.plugins
85
maven-javadoc-plugin
86 87
88
89
attach-javadocs
90
91
jar
92
93
94
95
96
97
true
98
org.apache.maven.plugins
99
maven-deploy-plugin
100 101
102
true
103
104
105
106
107
108
109 110

下面的代码片段是Maven 2.1.x的超级POM。

1 
2
4.0.0
3
Maven Default Project
4 5
6
7
central
8
Maven Repository Switchboard
9
default
10
http://repo1.maven.org/maven2
11
12
false
13
14
15
16 17
18
19
central
20
Maven Plugin Repository
21
http://repo1.maven.org/maven2
22
default
23
24
false
25
26
27
never
28
29
30
31 32
33
${project.basedir}/target
34
${project.build.directory}/classes
35
${project.artifactId}-${project.version}
36
${project.build.directory}/test-classes
37
${project.basedir}/src/main/java
38
39
src/main/scripts
40
${project.basedir}/src/test/java
41
42
43
${project.basedir}/src/main/resources
44
45
46
47
48
${project.basedir}/src/test/resources
49
50
51
52
53
54
maven-antrun-plugin
55
1.3
56
57
58
maven-assembly-plugin
59
2.2-beta-2
60
61
62
maven-clean-plugin
63
2.2
64
65
66
maven-compiler-plugin
67
2.0.2
68
69
70
maven-dependency-plugin
71
2.0
72
73
74
maven-deploy-plugin
75
2.4
76
77
78
maven-ear-plugin
79
2.3.1
80
81
82
maven-ejb-plugin
83
2.1
84
85
86
maven-install-plugin
87
2.2
88
89
90
maven-jar-plugin
91
2.2
92
93
94
maven-javadoc-plugin
95
2.5
96
97
98
maven-plugin-plugin
99
2.4.3
100
101
102
maven-rar-plugin
103
2.2
104
105
106
maven-release-plugin
107
2.0-beta-8
108
109
110
maven-resources-plugin
111
2.3
112
113
114
maven-site-plugin
115
2.0-beta-7
116
117
118
maven-source-plugin
119
2.0.4
120
121
122
maven-surefire-plugin
123
2.4.3
124
125
126
maven-war-plugin
127
2.1-alpha-2
128
129
130
131
132 133
134
${project.build.directory}/site
135
136
137
138
release-profile
139 140
141
142
performRelease
143
true
144
145
146 147
148
149
150
true
151
org.apache.maven.plugins
152
maven-source-plugin
153
154
155
attach-sources
156
157
jar
158
159
160
161
162
163
true
164
org.apache.maven.plugins
165
maven-javadoc-plugin
166
167
168
attach-javadocs
169
170
jar
171
172
173
174
175
176
true
177
org.apache.maven.plugins
178
maven-deploy-plugin
179
180
true
181
182
183
184
185
186
187 188

三、最小的POM要求

POM的最低要求如下:

  • project root - 项目根
  • modelVersion - 应设置为4.0.0
  • groupId - 项目组的ID。(理解为包名)
  • artifactId - 工件的ID(项目)
  • version - 指定组下的工件的版本

以下是一个例子:

4.0.0
com.mycompany.app
my-app
1

POM要求配置其groupIdartifactIdversion。这三个值形成项目的完全合格的工件名称。这是以<groupId>:<artifactId>:<version>的形式。对于上面的示例,其完全限定的工件名称为“com.mycompany.app:my-app:1”。

此外,如上所提到的什么是POM,如果没有指定的配置细节,Maven将使用默认值。这些默认值之一是打包类型。每个Maven项目都有一个打包类型。如果在POM中没有指定,那么将使用默认值“jar”。

此外,你可以看到,在最小POM,在库中未指定。如果您使用最小POM构建项目,它将继承超级POM中的存储库配置。因此,当看到Maven的在最小POM的依赖关系,它会知道这些依赖关系将在这里这是在超级POM中指定)被下载。

 

总结:

1、pom.xml文件是Maven构建的基础,而一个标准的pom.xml文件中,最基本是由groupId、artifactId、version这三个字段组成;在创建pom.xml之后,必须确定这三个属性,因为这三个属性在项目仓库是作为唯一标识的。

2、而对于三个属性的基本理解如下:

groupId:命名空间,比如com.jsoft.test

artivactId:项目名称,比如testproject

version:版本号,比如1.0

3、以下为标准的pom.xml包含的字段:

4.0.0
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...

提示:更详细的说明,参考官方解释:

4、还有一个重要的点,一般项目分模块进行开发,那么在pom.xml中也有体现,比如一个总的pom.xml管理这每一个模块的pom.xml,这种做法叫做分模块。

 

以上参考:

 

转载于:https://www.cnblogs.com/EasonJim/p/6799972.html

你可能感兴趣的文章
【BZOJ】2959: 长跑(lct+缩点)(暂时弃坑)
查看>>
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
查看>>
toad for oracle中文显示乱码
查看>>
SQL中Group By的使用
查看>>
错误org/aopalliance/intercept/MethodInterceptor解决方法
查看>>
Pylint在项目中的使用
查看>>
使用nginx做反向代理和负载均衡效果图
查看>>
access remote libvirtd
查看>>
(4) Orchard 开发之 Page 的信息存在哪?
查看>>
ASP.NET中 GridView(网格视图)的使用前台绑定
查看>>
深入了解Oracle ASM(二):ASM File number 1 文件目录
查看>>
Boosting(提升方法)之AdaBoost
查看>>
Binding object to winForm controller through VS2010 Designer(通过VS2010设计器将对象绑定到winForm控件上)...
查看>>
Spring Boot实战笔记(二)-- Spring常用配置(Scope、Spring EL和资源调用)
查看>>
SwaggerUI+SpringMVC——构建RestFul API的可视化界面
查看>>
springmvc怎么在启动时自己执行一个线程
查看>>
C# 通知机制 IObserver<T> 和 IObservable<T>
查看>>
Code of Conduct by jsFoundation
查看>>
C#小练习ⅲ
查看>>
电源防反接保护电路
查看>>