Maven使用介绍(四)

来源:互联网 发布:剑灵卡刀软件2017 编辑:程序博客网 时间:2024/06/05 10:23

packaging&plugin

plugin就是用来向maven提供goal的。一个plugin里面可以有多个goal,这就是为什么我们在指明goal时,前面会用一个冒号与plugin的名字。

一个plugin自己可以指定自己的goal绑定到哪个lifecycle的哪一个Phase上,另外也可以配置一个goal绑定到哪个phase上。可以在pom.xml里面配置。看两个配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<</code>plugin>
   <</code>groupId>org.codehaus.modello</</code>groupId>
   <</code>artifactId>modello-maven-plugin</</code>artifactId>
   <</code>version>1.4</</code>version>
   <</code>executions>
     <</code>execution>
       <</code>configuration>
         <</code>models>
           <</code>model>src/main/mdo/maven.mdo</</code>model>
         </</code>models>
         <</code>version>4.0.0</</code>version>
       </</code>configuration>
       <</code>goals>
         <</code>goal>java</</code>goal>
       </</code>goals>
     </</code>execution>
   </</code>executions>
 </</code>plugin>

这个就在当前的lifecycle里面添加了一个名字叫java的goal,这goal会根据自己的配置去绑定到一个phase,在phase执行的时候这个goal会执行。并且在这个配置里面,可以指定多个execution来让这个goal执行多次。

看另一个示例配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
<</code>plugin>
   <</code>groupId>com.mycompany.example</</code>groupId>
   <</code>artifactId>display-maven-plugin</</code>artifactId>
   <</code>version>1.0</</code>version>
   <</code>executions>
     <</code>execution>
       <</code>phase>process-test-resources</</code>phase>
       <</code>goals>
         <</code>goal>time</</code>goal>
       </</code>goals>
     </</code>execution>
   </</code>executions>
 </</code>plugin>

这个名为time的goal把自己绑定到了process-test-resource这个phase上。

在默认情况下,并不是所有的phase都绑定了goal,比如clean这个lifecycle是有三个phase的,但是只有其中的一个名为clean的phase默认绑定了一个clean:cleangoal,其它两个phase默认没有绑定任何goal。

之前已经提到过packaging,在pom.xml可以指定packaging,每种packaging都设定了一组phase和goal之间的绑定关系。在defaultlifecycle下,当packaging为 ejb/ejb3/jar/par/rar/war其中之一的值的时候,只有以下的phase绑定了goal,具体如下:

process-resourcesresources:resourcescompilecompiler:compileprocess-test-resourcesresources:testResourcestest-compilecompiler:testCompiletestsurefire:testpackagejar:jarinstallinstall:installdeploydeploy:deploy

 

总结

首先搞清楚maven的project的目录结构,然后理解maven的lifecycle,lifecycle是由buildphase组成,每一个build phase会绑定到goal。goal是由plugin提供的。每一种packaging的值都表明了一定的phase和goal之间的绑定关系。

另外一个很重要的就是dependency,我们要在项目中引用一个依赖,只需要在pom.xml指定依赖的名字和版本,maven会自动去远程的repository下载,然后放到本地的repository里面,这样以后所有的project都可以共用

其它细节可以参考http://maven.apache.org/guides/index.html。

0 0
原创粉丝点击