Maven百科 - 項目構建中的插件與目標

插件與目標

    在講述插件與生命週期關係以前,要明確一個概念,那就是插件目標。Maven它只抽象或者定義了生命週期與對應的任務,html

真正去實現這些任務的是各個插件,因此maven的發佈包只有3M左右的大小,當須要去作特定任務的時候,纔會去下載插件(.jar). 從代碼優化角度或者對於插件自己,考慮到代碼的重用性,各任務之間想必必定會有可重用部分的代碼,或者說,一部分可重用的代碼,也能作不少事情。 因此一個插件,它並非簡單的完成一個任務,而是包含了不少任務,而這些插件可作的事情,就是插件目標。shell

    以maven-dependency-plugin 插件爲例, 它有10多個目標,如denpendency:analze,denpendency:tree 等,冒號以前的部分是插件名稱,能夠是縮寫也能夠全稱,冒號後面則是這個插件的目標。
apache

插件綁定

    Maven的生命週期與插件相互綁定,用以完成構建任務。具體而言就是生命週期的階段與插件的目標相互綁定。例如項目編譯這一任務,它對應了 default 中的compile階段,而maven-compile-plugin這個插件的目標compile能夠完成這件事情maven

內置綁定

    爲了可以讓用戶不用配置就可以構建maven項目,maven 默認將生命週期的某些階段與插件目標作了綁定,當用戶經過命令調用生命週期階段的時候,對應的插件目標就會開始工做。ide

    並非全部的生命週期都有對應的插件目標,由於,默認的也不會相應的行爲發生。優化

    生命週期與插件目標綁定關係ui

    

生命週期階段
插件目標
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 爲例,spa

maven-jar-plugin:jar
插件

自定義綁定

    除了內置綁定之外,用戶還可以本身選擇將某個插件目標綁定到生命週期的某個階段上。最多見的就是在打成jar包的過程,內置綁定沒有涉及到 source 這一任務,須要自行綁定maven-source-plugin。code

    

<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
相關文章
相關標籤/搜索