码迷,mamicode.com
首页 > 其他好文 > 详细

Maven百科 - 项目构建中的插件与目标

时间:2015-09-15 13:09:20      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

插件与目标

    在讲述插件与生命周期关系之前,要明确一个概念,那就是插件目标。Maven它只抽象或者定义了生命周期与对应的任务,

真正去实现这些任务的是各个插件,所以maven的发布包只有3M左右的大小,当需要去做特定任务的时候,才会去下载插件(.jar). 从代码优化角度或者对于插件本身,考虑到代码的重用性,各任务之间想必一定会有可重用部分的代码,或者说,一部分可重用的代码,也能做很多事情。 所以一个插件,它并不是简单的完成一个任务,而是包含了很多任务,而这些插件可做的事情,就是插件目标。

    以maven-dependency-plugin 插件为例, 它有10多个目标,如denpendency:analze,denpendency:tree 等,冒号之前的部分是插件名称,可以是缩写也可以全称,冒号后面则是这个插件的目标。

插件绑定

    Maven的生命周期与插件相互绑定,用以完成构建任务。具体而言就是生命周期的阶段与插件的目标相互绑定。例如项目编译这一任务,它对应了 default 中的compile阶段,而maven-compile-plugin这个插件的目标compile可以完成这件事情

技术分享

内置绑定

    为了能够让用户不用配置就能够构建maven项目,maven 默认将生命周期的某些阶段与插件目标做了绑定,当用户通过命令调用生命周期阶段的时候,对应的插件目标就会开始工作。

    并不是所有的生命周期都有对应的插件目标,因为,默认的也不会相应的行为发生。

    生命周期与插件目标绑定关系

    

生命周期阶段
插件目标
clean
mave-clean-plugin:clean
site
maven-site-plugin:site
deploy
maven-deploy-plugin:deploy
process-resources maven-resources-plugin:resources
process-test-resources
maven-resources-plugin:testResources
compile
maven-compile-plugin:compile
test-compile
maven-compile-plugin:testCompile
test
maven-surefire-plugin:test
install
maven-install-plugin:install
deploy
maven-deploy-plugin:deploy
package

package 比较特殊,根据打包类型会对应不同的插件目标,以jar 为例,

maven-jar-plugin:jar

自定义绑定

    除了内置绑定以外,用户还能够自己选择将某个插件目标绑定到生命周期的某个阶段上。最常见的就是在打成jar包的过程,内置绑定没有涉及到 source 这一任务,需要自行绑定maven-source-plugin。

    

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.1.1</version>
            <executions>
                <execution>
                    <id>attach-sources</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>jar-no-fork</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

获取插件信息

    maven有着很多很多插件,大部分都来自于apache和codehaus提供。

    Apache提供的插件都具有较高的稳定性,具体可参阅 Apache Maven插件列表

    Codehaus上的mojo也提供了大量的插件,具体可参阅Codehaus Maven插件列表

    同时也可以调用命令 mvn help 来获取插件信息

mvn help: describe-Dplugin=org.apache.maven.plugins:maven-compiler-plugin:2.1


Maven百科 - 项目构建中的插件与目标

标签:

原文地址:http://my.oschina.net/u/1041012/blog/506248

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!