maven生命週期和插件

maven生命週期和插件

生命週期

maven的生命週期有三套,互相獨立。每一個生命週期含有不一樣階段,經常使用以下html

  • clean 清理項目
    • pre-clean 執行清理前須要完成的工做
    • clean 清理上一次構建生成的文件
    • post-clean 執行清理後須要完成的工做
  • default 構建項目
    • validate 驗證項目正確,全部必需的信息都有
    • initialize 初始化編譯狀態,例如建立target文件夾
    • generate-source
    • process-source 主資源文件變量替換,複製至主classpath目錄
    • generate-resources
    • process-resources
    • compile 編譯主源碼至主classpath目錄
    • process-classes
    • generator-test-sources
    • process-test-sources 測試資源文件變量替換,複製至測試classpath目錄
    • generate-test-resources
    • process-test-resources
    • test-compile 編譯測試源碼至測試classpath目錄
    • process-test-classes
    • test 執行測試case,測試代碼不會被打包
    • prepare-package
    • package 將編譯好的代碼打包成可發佈的格式
    • pre-integration-test
    • integration-test
    • post-integration-test
    • verify 覈實包是有效合規,達到質量標準
    • install 將包安裝到maven本地倉庫
    • deploy 將包複製到遠程倉庫
  • site 構件站點
    • pre-site
    • site 生成項目站點文檔
    • post-site
    • site-deploy 將生成的項目站點發布到服務器上

maven命令能夠調用maven的生命週期階段完成構建,不一樣生命週期無依賴,同一輩子命週期的階段先後是有依賴的。apache

example:
    mvn clean install site

插件

插件目標是插件對應的某一種功能,能夠和maven生命週期的階段綁定。服務器

默認綁定

生命週期階段 插件目標
process-resources maven-resource-plugin:resources
compile maven-compiler-plugin:compile
process-test-resource maven-resource-plugin:testResources
test-compile maven-compile-plugin:testCompile
test maven-surefire-plugin:test
package maven-jar-plugin:jar
install maven-install-plugin:install
deploy maven-deploy-plugin:deploy

自定義綁定

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

上面的代碼建立了一個自定義的綁定,在verify階段綁定了maven-source-plugin:jar-no-fork插件目標。做用是在verify階段生成項目源碼包,調用命令爲maven verifymaven

插件配置

  • 命令行配置
    使用-D參數配置,例如post

    mvn package -Dmaven.test.skip=true
  • pom文件配置
    使用<plugin>標籤內的<configration>配置,例如測試

    <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

    上面的代碼配置了compile插件編譯1.8版本的源文件spa

描述插件

插件解析機制

maven命令也能夠調用maven的插件目標來完成構建。
分析命令插件

mvn dependency:tree

插件的定位也須要三要素:groupid,artifactid,version。在上述命令中dependency稱爲插件前綴,tree稱爲插件目標。根據插件前綴定位插件座標。命令行

  1. 獲取插件meta.xml信息。插件倉庫的默認地址是http://repo1.maven.org/maven2/org/apache/maven/plugins。獲取該目錄下的maven-metadata.xml。
  2. 查找前綴對應的artifactid爲maven-dependency-plugin,由於查獲得因此確認groupid爲org.apache.maven.plugins,若是查不到則會去配置的其它倉庫重複步驟1,全部配置的倉庫均找不到則報錯。code

    <plugin>
        <name>Apache Maven Dependency Plugin</name>
        <prefix>dependency</prefix>
        <artifactId>maven-dependency-plugin</artifactId>
    </plugin>
  3. 肯定好插件的groupid和artifactid,根據這兩個信息查找插件的metadata.xml,地址爲http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/maven-metadata.xml,版本信息便可肯定,maven 3默認使用release版本,因此version爲2.10
  4. 因此實際執行的命令爲

    mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:tree
相關文章
相關標籤/搜索