昨天看到有人问依赖管理的问题,所以就想把自己在使用maven时的经验与大家进行分享。
主要作用就是配置一般项目都需要的基本信息。
如:编码,编译版本,生成eclipse项目时的编码,生成manifest描述,单元测试常用依赖,生成javadoc,生成source,eclipse:eclipse时自动关联source与javadoc,本地仓库配置等。
我定义的Final Name的格式是 ${project.artifactId}-${project.version}-r${svn.revision}-${maven.build.timestamp},其中包含了svn的rev号与构建时的时间(我们用的是svn)
注意我用的maven-svn-revision-number-plugin 1.7目前不支持1.7格式的svn,官方插件目前已经升级到1.12了说是可以了,大家可以试试。
这种格式方便我们对产出的项目版本进行有效的跟踪(manifest中也有相关的信息)
文件名如:project1-core-1.0-SNAPSHOT-r82-20120503091343.jar
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
|
<
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
>org.noahx
groupId
>
<
artifactId
>noahx-root
artifactId
>
<
version
>1.0
version
>
<
packaging
>pom
packaging
>
<
properties
>
<
maven.build.timestamp.format
>yyyyMMddHHmmss
maven.build.timestamp.format
>
<
project.build.sourceEncoding
>UTF-8
project.build.sourceEncoding
>
<
project.reporting.outputEncoding
>UTF-8
project.reporting.outputEncoding
>
<
maven.compile.source
>1.5
maven.compile.source
>
<
maven.compile.target
>1.5
maven.compile.target
>
<
maven-compiler-plugin.version
>2.3.2
maven-compiler-plugin.version
>
<
maven-eclipse-plugin.version
>2.9
maven-eclipse-plugin.version
>
<
maven-svn-revision-number-plugin.version
>1.7
maven-svn-revision-number-plugin.version
>
<
maven-jar-plugin.version
>2.4
maven-jar-plugin.version
>
<
maven-war-plugin.version
>2.2
maven-war-plugin.version
>
<
maven-source-plugin.version
>2.1.2
maven-source-plugin.version
>
<
maven-javadoc-plugin.version
>2.8.1
maven-javadoc-plugin.version
>
<
maven-deploy-plugin.version
>2.7
maven-deploy-plugin.version
>
<
jmock.version
>2.5.1
jmock.version
>
<
junit.version
>4.10
junit.version
>
properties
>
<
build
>
<
plugins
>
<
plugin
>
<
groupId
>com.google.code.maven-svn-revision-number-plugin
groupId
>
<
artifactId
>maven-svn-revision-number-plugin
artifactId
>
<
version
>${maven-svn-revision-number-plugin.version}
version
>
<
executions
>
<
execution
>
<
goals
>
<
goal
>revision
goal
>
goals
>
execution
>
executions
>
<
configuration
>
<
entries
>
<
entry
>
<
prefix
>svn
prefix
>
entry
>
entries
>
configuration
>
plugin
>
<
plugin
>
<
groupId
>org.apache.maven.plugins
groupId
>
<
artifactId
>maven-compiler-plugin
artifactId
>
<
version
>${maven-compiler-plugin.version}
version
>
<
configuration
>
<
source
>${maven.compile.source}
source
>
<
target
>${maven.compile.target}
target
>
<
encoding
>${project.build.sourceEncoding}
encoding
>
configuration
>
plugin
>
<
plugin
>
<
groupId
>org.apache.maven.plugins
groupId
>
<
artifactId
>maven-eclipse-plugin
artifactId
>
<
version
>${maven-eclipse-plugin.version}
version
>
<
configuration
>
<
downloadSources
>true
downloadSources
>
<
downloadJavadocs
>true
downloadJavadocs
>
<
useProjectReferences
>true
useProjectReferences
>
<
wtpversion
>2.0
wtpversion
>
<
additionalConfig
>
<
file
>
<
name
>.settings/org.eclipse.core.resources.prefs
name
>
<
content
>
=UTF-8${line.separator}]]>
content
>
file
>
<
file
>
<
name
>.settings/org.eclipse.core.runtime.prefs
name
>
<
content
>
content
>
file
>
additionalConfig
>
<
classpathContainers
>
<
classpathContainer
>org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6
classpathContainer
>
classpathContainers
>
configuration
>
plugin
>
<
plugin
>
<
groupId
>org.apache.maven.plugins
groupId
>
<
artifactId
>maven-jar-plugin
artifactId
>
<
version
>${maven-jar-plugin.version}
version
>
<
configuration
>
<
archive
>
<
manifest
>
<
addDefaultImplementationEntries
>true
addDefaultImplementationEntries
>
manifest
>
<
manifestEntries
>
<
Build-Time
>${maven.build.timestamp}
Build-Time
>
<
SCM-Revision
>${svn.revision}
SCM-Revision
>
<
X-Compile-Source-JDK
>${maven.compile.source}
X-Compile-Source-JDK
>
<
X-Compile-Target-JDK
>${maven.compile.target}
X-Compile-Target-JDK
>
manifestEntries
>
archive
>
configuration
>
plugin
>
<
plugin
>
<
groupId
>org.apache.maven.plugins
groupId
>
<
artifactId
>maven-war-plugin
artifactId
>
<
version
>${maven-war-plugin.version}
version
>
<
configuration
>
<
archive
>
<
manifest
>
<
addDefaultImplementationEntries
>true
addDefaultImplementationEntries
>
manifest
>
<
manifestEntries
>
<
Build-Time
>${maven.build.timestamp}
Build-Time
>
<
SCM-Revision
>${svn.revision}
SCM-Revision
>
<
X-Compile-Source-JDK
>${maven.compile.source}
X-Compile-Source-JDK
>
<
X-Compile-Target-JDK
>${maven.compile.target}
X-Compile-Target-JDK
>
manifestEntries
>
archive
>
configuration
>
plugin
>
<
plugin
>
<
groupId
>org.apache.maven.plugins
groupId
>
<
artifactId
>maven-source-plugin
artifactId
>
<
version
>${maven-source-plugin.version}
version
>
<
executions
>
<
execution
>
<
id
>attach-sources
id
>
<
goals
>
<
goal
>jar-no-fork
goal
>
goals
>
execution
>
executions
>
plugin
>
<
plugin
>
<
groupId
>org.apache.maven.plugins
groupId
>
<
artifactId
>maven-javadoc-plugin
artifactId
>
<
version
>${maven-javadoc-plugin.version}
version
>
<
configuration
>
<
locale
>en_US
locale
>
configuration
>
<
executions
>
<
execution
>
<
id
>attach-javadocs
id
>
<
goals
>
<
goal
>jar
goal
>
goals
>
execution
>
executions
>
plugin
>
<
plugin
>
<
groupId
>org.apache.maven.plugins
groupId
>
<
artifactId
>maven-deploy-plugin
artifactId
>
<
version
>${maven-deploy-plugin.version}
version
>
plugin
>
plugins
>
<
finalName
>${project.artifactId}-${project.version}-r${svn.revision}-${maven.build.timestamp}
finalName
>
build
>
<
dependencies
>
<
dependency
>
<
groupId
>org.jmock
groupId
>
<
artifactId
>jmock-junit4
artifactId
>
<
version
>${jmock.version}
version
>
|