支付进程中,经常需要统计代码行数,这时可以经过Eclipse的Search功能来贯彻。

1.Maven聚合

步骤:

我们在平时之支出中,项目屡次会让分割为一些独模块,比如common公共模块、system系统模块、log日志模块、reports统计模块、monitor监控模块等等。这时我们一定会产出这样一个亟需,我们用同赖构件多个模块,而无用每个模块都失去mvn
clean install一不好,Maven聚合就是之所以来促成者需求的。

1、在Package
Explorer中选中需要统计的保证;

俺们要构建另外一个模块,假设是UidpWeb,然后经该模块来构件整个项目之具备模块,POM结构如下:

2、单击菜单Search–>File;

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 3   <modelVersion>4.0.0</modelVersion>
 4 
 5   <groupId>com.uidp</groupId>
 6   <artifactId>UidpWeb</artifactId>
 7   <packaging>pom</packaging>
 8   <version>0.0.1-SNAPSHOT</version>
 9   <name>UidpWeb</name>
10   <url>http://maven.apache.org</url>
11 
12     <modules>
13     
14         <!-- parent pom -->
15         <module>parent</module>
16         
17         <!-- 公共资源文件,第三方js库,图片等媒体资源 -->
18         <module>ThirdParty</module>
19         
20         <!-- 公共依赖,工具包 -->
21         <module>common</module>
22 
23         <!-- 日志模块 -->
24         <module>log/pom-pack.xml</module>
25         
26         <!-- 第三方客户定制服务模块 -->
27         <module>biz/pom-pack.xml</module>
28             
29         <!-- 客户管理 -->
30         <module>customer/pom-pack.xml</module>
31         
32         <!-- 策略模块-->
33         <module>strategy/pom-pack.xml</module>
34         
35         <!-- 统计报表 -->
36         <module>reports/pom-pack.xml</module>
37         
38         <!-- 监控统计 -->
39         <module>monitor/pom-pack.xml</module>
40         
41         <!-- 系统管理模块 -->
42         <module>sysmgr/pom-pack.xml</module>
43         
44         <!-- 统一打war包 -->
45         <module>/pom-app.xml</module>
46 
47     </modules>
48 
49 </project>

3、按照下图设置Search选项:

注释:

图片 1

<packaging>pom</packaging>:对此聚合模块UidpWeb来说,packaging的型必须为pom,否则无法构建。

4、点击Search按钮;

<name>UidpWeb</name>:提供一个再度爱看的称呼,没什么其他太死作用。

5、在Search窗口中就是会见显得该品种的代码总行多次,以及各级文件之行数:

<modules>……</modules>:即时是落实集的标签,其下而含蓄多独module元素。

图片 2

<module>…</module>:据此来指定实现集的模块或者实现集的POM。

为有利于用户构建项目,通常将聚集模块放在项目目录的无限顶层,其他模块则当集模块的子目录存在,这时聚合的下就可若己这样指定路线:

<module>parent</module>

<module>log/pom-pack.xml</module>

即虽象征聚合模块下面的parent目录,聚合模块下面的log目录下之pom-pack.xml。

集模块下的情无非待POM文件,它不像其他模块那样有src/main/java、src/test/java等目录。他只是用来辅助聚合其他模块构建,他本人并无会见发出了多的本质内容。

关于目录结构要注意的是,聚合模块既好当作任何模块的父目录,也足以同其他模块处于平行的目,如图:

图片 3

一经用平行目录,聚合模块的POM要举行相应的改动,以对是的模块目录:

<module>../parent</module>

<module>../log/pom-pack.xml</module>

末尾运行mvn clean
install命令,Maven会分析聚合模块的POM、分析如果构建的模块、并计算产生一个反应堆构建顺序,然后因这个顺序依次构建各个模块,这样就可一次性构建具有聚合的模块。

 

2.Maven继承

如多只模块出现相同的依靠包,这样于pom.xml文件之始末出现了冗余、重复的内容,解决此题材其实用Maven的连续机制即可,就如Java的延续一样,父类就像一个模板,子类继承自父类,那么有些通用的道、变量都不用在子类中再度重声明了。Maven的持续机制仿佛,在一个父级别的Maven的pom文件被定义了相关的常量、依赖、插件等等配置后,实际项目模块可继续这个大项目
的pom文件,重复的宗不必显示的双重声称一尽了,相当给父Maven项目即是独模板,等在另外子模块去继承。不过父Maven项目只要高度抽象,高度提取公共的有(交集),做到同一介乎声明,多处下。

同聚集一样我们要构建另外一个模块,假设是parent,在联谊模块UidpWeb下面创建parent模块,然后经该模块来作颇具模块的父POM,POM结构如下:

  1 <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">
  2     <modelVersion>4.0.0</modelVersion>
  3 
  4     <groupId>com.uidp</groupId>
  5     <artifactId>UidpParent</artifactId>
  6     <version>0.0.1-SNAPSHOT</version>
  7     <packaging>pom</packaging>
  8 
  9     <name>UidpParent</name>
 10     <url>http://maven.apache.org</url>
 11 
 12     <properties>
 13         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 14 
 15         <repository-url>http://192.168.0.70:8081/content/groups/public/</repository-url>
 16 
 17         <maven-compiler-plugin.version>3.1</maven-compiler-plugin.version>
 18         <maven-war-plugin.version>2.4</maven-war-plugin.version>
 19         <maven-javadoc-plugin.version>2.9.1</maven-javadoc-plugin.version>
 20         <maven-release-plugin.version>2.4.1</maven-release-plugin.version>
 21         <maven-deploy-plugin.version>2.7</maven-deploy-plugin.version>
 22 
 23 
 24 
 25         <junit.version>4.11</junit.version>
 26         <oracle.version>10.2.0.4</oracle.version>
 27         <springframework.version>3.2.8.RELEASE</springframework.version>
 28         <mybatis.version>3.2.2</mybatis.version>
 29         <mybatis-spring.version>1.2.0</mybatis-spring.version>
 30         <mysql-driver.version>5.1.25</mysql-driver.version>
 31         <aspectjweaver.version>1.7.3</aspectjweaver.version>
 32 
 33         <commons-dbcp.version>1.4</commons-dbcp.version>
 34         <commons-pool.version>1.5.5</commons-pool.version>
 35         <commons-fileupload.version>1.2.2</commons-fileupload.version>
 36 
 37         <log4j.version>1.2.17</log4j.version>
 38         <slf4j-api.version>1.7.5</slf4j-api.version>
 39         <slf4j-log4j12.version>1.7.5</slf4j-log4j12.version>
 40 
 41         <freemarker.version>2.3.19</freemarker.version>
 42 
 43         <jackson-core.version>2.5.0</jackson-core.version>
 44         <jackson-mapper-asl.version>1.9.7</jackson-mapper-asl.version>
 45 
 46         <javax.servlet-api.version>3.0.1</javax.servlet-api.version>
 47         <jsp-api.version>2.2</jsp-api.version>
 48         <kryo.version>1.04</kryo.version>
 49         <snakeyaml.version>1.8</snakeyaml.version>
 50         <jedis.version>2.0.0</jedis.version>
 51         <commons-lang.version>2.6</commons-lang.version>
 52 
 53 
 54         <mockito-core.version>1.8.5</mockito-core.version>
 55         <powermock-core.version>1.4.9</powermock-core.version>
 56         <powermock-api-mockito.version>1.4.9</powermock-api-mockito.version>
 57         <powermock-module-junit4.version>1.4.9</powermock-module-junit4.version>
 58 
 59 
 60     </properties>
 61 
 62     <dependencyManagement>
 63         <dependencies>
 64 
 65             <dependency>
 66                 <groupId>junit</groupId>
 67                 <artifactId>junit</artifactId>
 68                 <version>${junit.version}</version>
 69                 <scope>test</scope>
 70             </dependency>
 71 
 72             <!-- spring jar begin -->
 73             <dependency>
 74                 <groupId>org.springframework</groupId>
 75                 <artifactId>spring-web</artifactId>
 76                 <version>${springframework.version}</version>
 77             </dependency>
 78 
 79             <dependency>
 80                 <groupId>org.springframework</groupId>
 81                 <artifactId>spring-webmvc</artifactId>
 82                 <version>${springframework.version}</version>
 83             </dependency>
 84 
 85             <dependency>
 86                 <groupId>org.springframework</groupId>
 87                 <artifactId>spring-beans</artifactId>
 88                 <version>${springframework.version}</version>
 89             </dependency>
 90 
 91             <dependency>
 92                 <groupId>org.springframework</groupId>
 93                 <artifactId>spring-context</artifactId>
 94                 <version>${springframework.version}</version>
 95             </dependency>
 96 
 97             <dependency>
 98                 <groupId>org.springframework</groupId>
 99                 <artifactId>spring-context-support</artifactId>
100                 <version>${springframework.version}</version>
101             </dependency>
102 
103             <dependency>
104                 <groupId>org.springframework</groupId>
105                 <artifactId>spring-core</artifactId>
106                 <version>${springframework.version}</version>
107             </dependency>
108 
109             <dependency>
110                 <groupId>org.springframework</groupId>
111                 <artifactId>spring-jdbc</artifactId>
112                 <version>${springframework.version}</version>
113             </dependency>
114 
115             <dependency>
116                 <groupId>org.springframework</groupId>
117                 <artifactId>spring-tx</artifactId>
118                 <version>${springframework.version}</version>
119             </dependency>
120 
121             <dependency>
122                 <groupId>org.springframework</groupId>
123                 <artifactId>spring-test</artifactId>
124                 <version>${springframework.version}</version>
125             </dependency>
126 
127             <dependency>
128                 <groupId>org.springframework</groupId>
129                 <artifactId>spring-expression</artifactId>
130                 <version>${springframework.version}</version>
131             </dependency>
132 
133             <dependency>
134                 <groupId>org.springframework</groupId>
135                 <artifactId>spring-aop</artifactId>
136                 <version>${springframework.version}</version>
137             </dependency>
138             <!-- spring jar end -->
139 
140             <dependency>
141                 <groupId>org.mybatis</groupId>
142                 <artifactId>mybatis</artifactId>
143                 <version>${mybatis.version}</version>
144             </dependency>
145 
146             <dependency>
147                 <groupId>org.mybatis</groupId>
148                 <artifactId>mybatis-spring</artifactId>
149                 <version>${mybatis-spring.version}</version>
150             </dependency>
151 
152             <dependency>
153                 <groupId>mysql</groupId>
154                 <artifactId>mysql-connector-java</artifactId>
155                 <version>${mysql-driver.version}</version>
156             </dependency>
157 
158             <dependency>
159                 <groupId>com.oracle</groupId>
160                 <artifactId>ojdbc14</artifactId>
161                 <version>${oracle.version}</version>
162             </dependency>
163 
164             <dependency>
165                 <groupId>org.aspectj</groupId>
166                 <artifactId>aspectjweaver</artifactId>
167                 <version>${aspectjweaver.version}</version>
168             </dependency>
169 
170 
171             <dependency>
172                 <groupId>commons-dbcp</groupId>
173                 <artifactId>commons-dbcp</artifactId>
174                 <version>${commons-dbcp.version}</version>
175             </dependency>
176             <dependency>
177                 <groupId>commons-pool</groupId>
178                 <artifactId>commons-pool</artifactId>
179                 <version>${commons-pool.version}</version>
180             </dependency>
181             <dependency>
182                 <groupId>commons-fileupload</groupId>
183                 <artifactId>commons-fileupload</artifactId>
184                 <version>${commons-fileupload.version}</version>
185             </dependency>
186 
187 
188             <!-- log jar -->
189             <dependency>
190                 <groupId>log4j</groupId>
191                 <artifactId>log4j</artifactId>
192                 <version>${log4j.version}</version>
193             </dependency>
194             <dependency>
195                 <groupId>org.slf4j</groupId>
196                 <artifactId>slf4j-api</artifactId>
197                 <version>${slf4j-api.version}</version>
198             </dependency>
199             <dependency>
200                 <groupId>org.slf4j</groupId>
201                 <artifactId>slf4j-log4j12</artifactId>
202                 <version>${slf4j-log4j12.version}</version>
203             </dependency>
204 
205             <!-- freemarker -->
206             <dependency>
207                 <groupId>org.freemarker</groupId>
208                 <artifactId>freemarker</artifactId>
209                 <version>${freemarker.version}</version>
210             </dependency>
211 
212 
213             <!-- jackson -->
214             <dependency>
215                 <groupId>com.fasterxml.jackson.core</groupId>
216                 <artifactId>jackson-core</artifactId>
217                 <version>${jackson-core.version}</version>
218             </dependency>
219             <dependency>
220                 <groupId>org.codehaus.jackson</groupId>
221                 <artifactId>jackson-mapper-asl</artifactId>
222                 <version>${jackson-mapper-asl.version}</version>
223             </dependency>
224 
225             <dependency>
226                 <groupId>javax.servlet</groupId>
227                 <artifactId>javax.servlet-api</artifactId>
228                 <version>${javax.servlet-api.version}</version>
229                 <scope>provided</scope>
230             </dependency>
231 
232             <dependency>
233                 <groupId>javax.servlet.jsp</groupId>
234                 <artifactId>jsp-api</artifactId>
235                 <version>${jsp-api.version}</version>
236                 <scope>provided</scope>
237             </dependency>
238 
239             <dependency>
240                 <groupId>com.googlecode</groupId>
241                 <artifactId>kryo</artifactId>
242                 <version>${kryo.version}</version>
243             </dependency>
244 
245             <dependency>
246                 <groupId>org.yaml</groupId>
247                 <artifactId>snakeyaml</artifactId>
248                 <version>${snakeyaml.version}</version>
249             </dependency>
250 
251             <dependency>
252                 <groupId>redis.clients</groupId>
253                 <artifactId>jedis</artifactId>
254                 <version>${jedis.version}</version>
255             </dependency>
256 
257             <dependency>
258                 <groupId>commons-lang</groupId>
259                 <artifactId>commons-lang</artifactId>
260                 <version>${commons-lang.version}</version>
261             </dependency>
262 
263 
264             <dependency>
265                 <groupId>org.mockito</groupId>
266                 <artifactId>mockito-core</artifactId>
267                 <version>${mockito-core.version}</version>
268                 <scope>test</scope>
269             </dependency>
270 
271             <dependency>
272                 <groupId>org.powermock</groupId>
273                 <artifactId>powermock-core</artifactId>
274                 <version>${powermock-core.version}</version>
275                 <scope>test</scope>
276             </dependency>
277 
278             <dependency>
279                 <groupId>org.powermock</groupId>
280                 <artifactId>powermock-api-mockito</artifactId>
281                 <version>${powermock-api-mockito.version}</version>
282                 <scope>test</scope>
283             </dependency>
284 
285             <dependency>
286                 <groupId>org.powermock</groupId>
287                 <artifactId>powermock-module-junit4</artifactId>
288                 <version>${powermock-module-junit4.version}</version>
289                 <scope>test</scope>
290             </dependency>
291 
292 
293         </dependencies>
294     </dependencyManagement>
295     
296     <distributionManagement>
297         <repository>
298             <id>releases</id>
299             <name>public</name>
300             <url>http://59.50.95.66:8081/nexus/content/repositories/releases</url>
301         </repository>
302         <snapshotRepository>
303             <id>snapshots</id>
304             <name>Snapshots</name>
305             <url>http://59.50.95.66:8081/nexus/content/repositories/snapshots</url>
306         </snapshotRepository>
307     </distributionManagement>
308     
309     
310     
311 <build>
312     <plugins>
313 
314         <plugin>
315             <groupId>org.apache.maven.plugins</groupId>
316             <artifactId>maven-compiler-plugin</artifactId>
317             <version>${maven-compiler-plugin.version}</version>
318             <configuration>
319                 <source>1.7</source> <!-- 源代码使用的开发版本 -->
320                 <target>1.7</target> <!-- 需要生成的目标class文件的编译版本 -->
321             </configuration>
322         </plugin>
323 
324         <plugin>
325             <groupId>org.apache.maven.plugins</groupId>
326             <artifactId>maven-javadoc-plugin</artifactId>
327             <version>${maven-javadoc-plugin.version}</version>
328         </plugin>
329 
330 
331         <plugin>
332             <groupId>org.apache.maven.plugins</groupId>
333             <artifactId>maven-release-plugin</artifactId>
334             <version>${maven-release-plugin.version}</version>
335         </plugin>
336 
337         <plugin>
338             <groupId>org.apache.maven.plugins</groupId>
339             <artifactId>maven-deploy-plugin</artifactId>
340             <version>${maven-deploy-plugin.version}</version>
341             <configuration>
342                 <updateReleaseInfo>true</updateReleaseInfo>
343             </configuration>
344         </plugin>
345 
346 
347 
348     </plugins>
349 </build>
350 
351 
352     <pluginRepositories>
353         <pluginRepository>
354             <id>nexus</id>
355             <name>nexus</name>
356             <url>http://192.168.0.70:8081/content/groups/public/</url>
357             <releases>
358                 <enabled>true</enabled>
359             </releases>
360             <snapshots>
361                 <enabled>true</enabled>
362             </snapshots>
363         </pluginRepository>
364     </pluginRepositories>
365 
366     
367 </project>

需要注意的是,他的packaging和聚众一样吧pom,作为父模块的pom,其卷入类型必须也pom。父模片就是为帮助解除配置的重复,因此他自我不分包除POM的色文件,也就是未待src/main/java之类的公文夹了。

发生矣父模块,就用为另外模块来继承其,我们来拘禁个实际的例证:

  1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3   <modelVersion>4.0.0</modelVersion>
  4 
  5     <parent>
  6         <groupId>com.uidp</groupId>
  7         <artifactId>UidpParent</artifactId>
  8         <version>0.0.1-SNAPSHOT</version>
  9     </parent>
 10 
 11   <groupId>com.uidp</groupId>
 12   <artifactId>log</artifactId>
 13   <packaging>war</packaging>
 14   <version>0.0.1-SNAPSHOT</version>
 15   <name>log</name>
 16   <url>http://maven.apache.org</url>
 17 
 18     <dependencies>
 19 
 20         <dependency>
 21             <artifactId>ThirdParty</artifactId>
 22             <version>0.0.1-SNAPSHOT</version>
 23             <groupId>${project.parent.groupId}</groupId>
 24             <type>war</type>
 25         </dependency>
 26 
 27         <dependency>
 28             <groupId>com.uidp</groupId>
 29             <artifactId>WebCommon</artifactId>
 30             <version>0.0.1-SNAPSHOT</version>
 31         </dependency>
 32 
 33         <dependency>
 34             <groupId>junit</groupId>
 35             <artifactId>junit</artifactId>
 36             <scope>test</scope>
 37         </dependency>
 38 
 39         <dependency>
 40             <groupId>org.aspectj</groupId>
 41             <artifactId>aspectjweaver</artifactId>
 42         </dependency>
 43 
 44         <!-- spring jar begin -->
 45         <dependency>
 46             <groupId>org.springframework</groupId>
 47             <artifactId>spring-web</artifactId>
 48         </dependency>
 49         <dependency>
 50             <groupId>org.springframework</groupId>
 51             <artifactId>spring-webmvc</artifactId>
 52         </dependency>
 53         <dependency>
 54             <groupId>org.springframework</groupId>
 55             <artifactId>spring-beans</artifactId>
 56         </dependency>
 57         <dependency>
 58             <groupId>org.springframework</groupId>
 59             <artifactId>spring-context</artifactId>
 60         </dependency>
 61         <dependency>
 62             <groupId>org.springframework</groupId>
 63             <artifactId>spring-context-support</artifactId>
 64         </dependency>
 65         <dependency>
 66             <groupId>org.springframework</groupId>
 67             <artifactId>spring-core</artifactId>
 68         </dependency>
 69         <dependency>
 70             <groupId>org.springframework</groupId>
 71             <artifactId>spring-jdbc</artifactId>
 72         </dependency>
 73         <dependency>
 74             <groupId>org.springframework</groupId>
 75             <artifactId>spring-tx</artifactId>
 76         </dependency>
 77         <dependency>
 78             <groupId>org.springframework</groupId>
 79             <artifactId>spring-test</artifactId>
 80         </dependency>
 81         <dependency>
 82             <groupId>org.springframework</groupId>
 83             <artifactId>spring-expression</artifactId>
 84         </dependency>
 85         <dependency>
 86             <groupId>org.springframework</groupId>
 87             <artifactId>spring-aop</artifactId>
 88         </dependency>
 89         <!-- spring jar end -->
 90         
 91         <!-- Quartz 框架 -->
 92         <dependency>
 93             <groupId>org.quartz-scheduler</groupId>
 94             <artifactId>quartz</artifactId>
 95             <version>1.8.6</version>
 96         </dependency>
 97 
 98         <!-- mybatis db -->
 99         <dependency>
100             <groupId>org.mybatis</groupId>
101             <artifactId>mybatis</artifactId>
102         </dependency>
103 
104         <dependency>
105             <groupId>org.mybatis</groupId>
106             <artifactId>mybatis-spring</artifactId>
107         </dependency>
108 
109         <!-- mysql驱动依赖包 -->
110         <dependency>
111             <groupId>mysql</groupId>
112             <artifactId>mysql-connector-java</artifactId>
113         </dependency>
114 
115         <!-- 数据库连接池 jar -->
116         <dependency>
117             <groupId>commons-dbcp</groupId>
118             <artifactId>commons-dbcp</artifactId>
119         </dependency>
120         <dependency>
121             <groupId>commons-pool</groupId>
122             <artifactId>commons-pool</artifactId>
123         </dependency>
124         <dependency>
125             <groupId>commons-fileupload</groupId>
126             <artifactId>commons-fileupload</artifactId>
127         </dependency>
128 
129         <!-- jackson -->
130         <dependency>
131             <groupId>com.fasterxml.jackson.core</groupId>
132             <artifactId>jackson-core</artifactId>
133         </dependency>
134         <dependency>
135             <groupId>org.codehaus.jackson</groupId>
136             <artifactId>jackson-mapper-asl</artifactId>
137         </dependency>
138 
139         <!-- log jar -->
140         <dependency>
141             <groupId>log4j</groupId>
142             <artifactId>log4j</artifactId>
143         </dependency>
144         <dependency>
145             <groupId>org.slf4j</groupId>
146             <artifactId>slf4j-api</artifactId>
147         </dependency>
148         <dependency>
149             <groupId>org.slf4j</groupId>
150             <artifactId>slf4j-log4j12</artifactId>
151         </dependency>
152 
153         <!-- freemarker -->
154         <dependency>
155             <groupId>org.freemarker</groupId>
156             <artifactId>freemarker</artifactId>
157         </dependency>
158 
159         <dependency>
160             <groupId>com.oracle</groupId>
161             <artifactId>ojdbc14</artifactId>
162         </dependency>
163 
164         <!--因为api是打jar包的,所以这里用compile,如果是正常情况打war包,用private-->
165         <dependency>
166             <groupId>javax.servlet</groupId>
167             <artifactId>javax.servlet-api</artifactId>
168             <scope>compile</scope>
169         </dependency>
170 
171         <dependency>
172             <groupId>javax.servlet.jsp</groupId>
173             <artifactId>jsp-api</artifactId>
174             <scope>compile</scope>
175         </dependency>
176 
177         <dependency>
178             <groupId>commons-lang</groupId>
179             <artifactId>commons-lang</artifactId>
180             <version>2.6</version>
181         </dependency>
182 
183     </dependencies>
184     <build>
185         <plugins>
186 
187             <plugin>
188                 <groupId>org.mortbay.jetty</groupId>
189                 <artifactId>jetty-maven-plugin</artifactId>
190                 <version>7.2.2.v20101205</version>
191                 <configuration>
192                     <stopKey>foo</stopKey>
193                     <stopPort>9999</stopPort>
194                     <webAppConfig>
195                         <contextPath>/</contextPath>
196                     </webAppConfig>
197                     <!-- 指定额外需要监控变化的文件或文件夹,主要用于热部署中的识别文件更新 -->
198                     <scanTargetPatterns>
199                         <scanTargetPattern>
200                             <directory>src</directory>
201                             <!-- <includes> <include>**/*.java</include> <include>**/*.properties</include>
202                                 </includes> -->
203                             <!-- <excludes> <exclude>**/*.xml</exclude> <exclude>**/myspecial.properties</exclude>
204                                 </excludes> -->
205                         </scanTargetPattern>
206                     </scanTargetPatterns>
207                     <scanIntervalSeconds>1</scanIntervalSeconds>
208                     <webAppSourceDirectory>${basedir}/src/main/webapp</webAppSourceDirectory><!--
209                         指定web页面的文件夹 -->
210                 </configuration>
211             </plugin>
212 
213             <plugin>
214                 <groupId>org.apache.maven.plugins</groupId>
215                 <artifactId>maven-war-plugin</artifactId>
216                 <version>${maven-war-plugin.version}</version>
217                 <configuration>
218                     <failOnMissingWebXml>false</failOnMissingWebXml>
219                     <warName>${project.artifactId}</warName>
220                 </configuration>
221             </plugin>
222         </plugins>
223     </build>
224 </project>

上述POM中动用parent元素声明父模块,parent下的子元素groupId、artifactId和version指定了父模块的坐标,这三单元素是得的。relativePath元素是可选的,我这边用之默认值所以并没配备,relativePath元素的默认值为../pom.xml,也就是说,Maven默认父POM在高达一致层目录下。当型构建时,Maven会首先根据relativePath检查父POM,如果搜索不交,再从本地仓库寻。所以像自己这边而地方仓库着呢未曾父POM的言辞构建就见面败了,所以极好之做法是部署relativePath为../parent/pom.xml表示父POM的职位和于log/目录平行的parent/下。这样便本地仓库没有父POM构建的时刻啊未会见报错了。

 

世家有木有发现log的groupId和version元素是与父POM一样的,所以这里其实是可简简单单不要的,但是倘若log有温馨特别的groupId和version,那么即便显得的配置一个即好了。对于artifactId元素来说,子模块应该显式的宣示,避免造成坐标冲突与模糊。

 

对因之后续,我们得管依放入<dependencyManagement>元素中,这样的倚重就改为了而挑选的,我们而在档次遭到连续我们所急需的依靠即可,比如:

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <scope>test</scope>
</dependency>

俺们无需要展开版本的声明,这样就可以根据自己之用引入需要的担保,而非会见持续全部底保。

对每个项目还亟待持续的凭则非在<dependencyManagement>元素中,不过个人认为没关系必要,都居<dependencyManagement>元素中,需要之当儿引入一下不怕哼了。

 

插件的后续与因之后续是近乎的,这里可是大多的认证,插件也发一个<pluginManagement></pluginManagement>元素,放在脚的插件也表示也而选取的。

 

以运用父POM的早晚啊使以集合模块中入:

<module>parent</module>

该是身处最前面,大家可以省上面的汇POM。

 

3.可是承的POM元素

groupId和version是可以被接续的,那么还有什么样POM元素得以叫持续呢?以下是一个完整的列表,并顺便了简便的说明:

  • groupId :项目组 ID ,项目坐标的基本因素;  
  • version :项目版本,项目坐标的为主元素;  
  • description :项目的讲述信息;  
  • organization :项目之集体消息;  
  • inceptionYear :项目之首创年份;  
  • url :项目的 url 地址;  
  • develoers :项目的开发者信息;  
  • contributors :项目之贡献者信息;  
  • distributionManagerment :项目的部署信息;  
  • issueManagement :缺陷跟踪系统信息;  
  • ciManagement :项目之频频承信息;  
  • scm :项目的版本控制信息;  
  • mailingListserv :项目的邮件列表信息;  
  • properties :自定义的 Maven 属性;  
  • dependencies :项目之负配置;  
  • dependencyManagement :醒目的凭管理配置;  
  • repositories :项目之库配置;  
  • build
    :包括项目之源码目录配置、输出目录配置、插件配置、插件管理配置等;  
  • reporting :包括项目的告诉输出目录配置、报告插件配置等。

 

4.会合与持续的涉嫌

区别 :

1.对于聚合模块来说,它知道有哪些给凑的模块,但那些吃集结的模块不了解之集模块的存。

2.对于持续关系的父POM来说,它不晓得有哪些子模块继承给其,但那些子模块都要掌握自己之父POM是什么。

共同点 :

1.集合POM与持续关系遭遇之父POM的packaging都是pom。

2.会师模块和持续关系着的父模块除了POM之外还尚未实际的情节。

图示:

图片 4

 

5.关于版本的简说明

于因此过svn或者cvs的对象等,都见面明白,每次修改都见面付给一个本子及服务器上,对于咱们平常所搭建的种类,大家可能没有留意到本是定义。其实版本对于叠加式开发之类型是只雅重要的定义,通过地方的仗,我们尽管足以清楚地看到一个version,这个就算是引入依赖包之本子。

那么版本一共可以分成几单层次,一般的话,版本可以分为:总版本号.分支版本号.小版本号-里程碑版本。

总版本号:一般代表框架的更动。

分支版本号:一般代表增加了有些效。

小版本号:在旁版本上面进行bug的修复。

里程碑:SNAPSHOT–>alpha–>beta–>release–>GA

 

结束语:关于延续所蕴涵的情比较多,不是三言两语就可知描述的雅理解的,所以还强烈建议大家可购置许晓斌先生的《Maven实战》,这仍书会介绍的可比详细,个人觉得最好好之投资就是投资投机的学习,所以要是您是Maven的初家,应该与我一样打这按照图书,如果是大神,那么为便没必要看即篇博文了,营养价值并无强。

 

可是爱博主:AlanLee

博客地址:http://www.cnblogs.com/AlanLee

正文自博客园,欢迎大家在博客园。