欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Maven構(gòu)建生命周期詳細(xì)介紹

 更新時間:2017年11月02日 14:16:30   作者:劉曉春  
這篇文章主要介紹了Maven構(gòu)建生命周期詳細(xì)介紹,小編覺得還是挺不錯的,這里分享給大家,需要的朋友可以參考下。

什么是構(gòu)建生命周期

構(gòu)建生命周期是一組階段的序列(sequence of phases),這些構(gòu)建生命周期中的每一個由構(gòu)建階段的不同列表定義,其中構(gòu)建階段表示生命周期中的階段。

例如,默認(rèn)(default)的生命周期包括以下階段(注意:這里是簡化的階段,用于生命周期階段的完整列表):

驗證(validate) - 驗證項目是否正確,所有必要的信息可用
編譯(compile) - 編譯項目的源代碼
測試(test) - 使用合適的單元測試框架測試編譯的源代碼。這些測試不應(yīng)該要求代碼被打包或部署
打包(package) - 采用編譯的代碼,并以其可分配格式(如JAR)進行打包。
驗證(verify) - 對集成測試的結(jié)果執(zhí)行任何檢查,以確保滿足質(zhì)量標(biāo)準(zhǔn)
安裝(install) - 將軟件包安裝到本地存儲庫中,用作本地其他項目的依賴項
部署(deploy) - 在構(gòu)建環(huán)境中完成,將最終的包復(fù)制到遠程存儲庫以與其他開發(fā)人員和項目共享。每個階段定義了目標(biāo)被執(zhí)行的順序。這里的階段是生命周期的一部分。

舉例說明,一個典型的 Maven 構(gòu)建生命周期是由以下幾個階段的序列組成的:

階段 處理 描述
prepare-resources 資源拷貝 本階段可以自定義需要拷貝的資源
compile 編譯 本階段完成源代碼編譯
package 打包 本階段根據(jù) pom.xml 中描述的打包配置創(chuàng)建 JAR / WAR 包
install 安裝 本階段在本地 / 遠程倉庫中安裝工程包

當(dāng)需要在某個特定階段之前或之后執(zhí)行目標(biāo)時,可以使用 pre 和 post 來定義這個目標(biāo)。

當(dāng) Maven 開始構(gòu)建工程,會按照所定義的階段序列的順序執(zhí)行每個階段注冊的目標(biāo)。Maven 有以下三個標(biāo)準(zhǔn)的生命周期:

clean
default(or build)
site

目標(biāo)表示一個特定的、對構(gòu)建和管理工程有幫助的任務(wù)。它可能綁定了 0 個或多個構(gòu)建階段。沒有綁定任何構(gòu)建階段的目標(biāo)可以在構(gòu)建生命周期之外被直接調(diào)用執(zhí)行。

執(zhí)行的順序依賴于目標(biāo)和構(gòu)建階段被調(diào)用的順序。例如,考慮下面的命令。clean 和 package 參數(shù)是構(gòu)建階段,而 dependency:copy-dependencies 是一個目標(biāo)。

mvn clean dependency:copy-dependencies package

這里的 clean 階段將會被首先執(zhí)行,然后 dependency:copy-dependencies 目標(biāo)會被執(zhí)行,最終 package 階段被執(zhí)行。

Clean 生命周期
當(dāng)我們執(zhí)行 mvn post-clean 命令時,Maven 調(diào)用 clean 生命周期,它包含以下階段。

pre-clean
clean
post-clean

Maven 的 clean 目標(biāo)(clean:clean)綁定到了 clean 生命周期的 clean 階段。它的 clean:clean 目標(biāo)通過刪除構(gòu)建目錄刪除了構(gòu)建輸出。所以當(dāng) mvn clean 命令執(zhí)行時,Maven 刪除了構(gòu)建目錄。

我們可以通過在上面的 clean 生命周期的任何階段定義目標(biāo)來修改這部分的操作行為。

在下面的例子中,我們將 maven-antrun-plugin:run 目標(biāo)添加到 pre-clean、clean 和 post-clean 階段中。這樣我們可以在 clean 生命周期的各個階段顯示文本信息。

我們已經(jīng)在 C:\MVN\project 目錄下創(chuàng)建了一個 pom.xml 文件。

<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname.projectgroup</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<build>
<plugins>
  <plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.1</version>
  <executions>
   <execution>
     <id>id.pre-clean</id>
     <phase>pre-clean</phase>
     <goals>
      <goal>run</goal>
     </goals>
     <configuration>
      <tasks>
        <echo>pre-clean phase</echo>
      </tasks>
     </configuration>
   </execution>
   <execution>
     <id>id.clean</id>
     <phase>clean</phase>
     <goals>
     <goal>run</goal>
     </goals>
     <configuration>
      <tasks>
        <echo>clean phase</echo>
      </tasks>
     </configuration>
   </execution>
   <execution>
     <id>id.post-clean</id>
     <phase>post-clean</phase>
     <goals>
      <goal>run</goal>
     </goals>
     <configuration>
      <tasks>
        <echo>post-clean phase</echo>
      </tasks>
     </configuration>
   </execution>
  </executions>
  </plugin>
</plugins>
</build>
</project>

現(xiàn)在打開命令控制臺,跳轉(zhuǎn)到 pom.xml 所在目錄,并執(zhí)行下面的 mvn 命令。

C:\MVN\project>mvn post-clean

Maven 將會開始處理并顯示 clean 生命周期的所有階段。

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO]  task-segment: [post-clean]
[INFO] ------------------------------------------------------------------
[INFO] [antrun:run {execution: id.pre-clean}]
[INFO] Executing tasks
   [echo] pre-clean phase
[INFO] Executed tasks
[INFO] [clean:clean {execution: default-clean}]
[INFO] [antrun:run {execution: id.clean}]
[INFO] Executing tasks
   [echo] clean phase
[INFO] Executed tasks
[INFO] [antrun:run {execution: id.post-clean}]
[INFO] Executing tasks
   [echo] post-clean phase
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Sat Jul 07 13:38:59 IST 2012
[INFO] Final Memory: 4M/44M
[INFO] ------------------------------------------------------------------

你可以嘗試修改 mvn clean 命令,來顯示 pre-clean 和 clean,而在 post-clean 階段不執(zhí)行任何操作。

Default (or Build) 生命周期
這是 Maven 的主要生命周期,被用于構(gòu)建應(yīng)用。包括下面的 23 個階段。

生命周期階段 描述
validate 檢查工程配置是否正確,完成構(gòu)建過程的所有必要信息是否能夠獲取到。
initialize 初始化構(gòu)建狀態(tài),例如設(shè)置屬性。
generate-sources 生成編譯階段需要包含的任何源碼文件。
process-sources 處理源代碼,例如,過濾任何值(filter any value)。
generate-resources 生成工程包中需要包含的資源文件。
process-resources 拷貝和處理資源文件到目的目錄中,為打包階段做準(zhǔn)備。
compile 編譯工程源碼。
process-classes 處理編譯生成的文件,例如 Java Class 字節(jié)碼的加強和優(yōu)化。
generate-test-sources 生成編譯階段需要包含的任何測試源代碼。
process-test-sources 處理測試源代碼,例如,過濾任何值(filter any values)。
test-compile 編譯測試源代碼到測試目的目錄。
process-test-classes 處理測試代碼文件編譯后生成的文件。
test 使用適當(dāng)?shù)膯卧獪y試框架(例如JUnit)運行測試。
prepare-package 在真正打包之前,為準(zhǔn)備打包執(zhí)行任何必要的操作。
package 獲取編譯后的代碼,并按照可發(fā)布的格式進行打包,例如 JAR、WAR 或者 EAR 文件。
pre-integration-test 在集成測試執(zhí)行之前,執(zhí)行所需的操作。例如,設(shè)置所需的環(huán)境變量。
integration-test 處理和部署必須的工程包到集成測試能夠運行的環(huán)境中。
post-integration-test 在集成測試被執(zhí)行后執(zhí)行必要的操作。例如,清理環(huán)境。
verify 運行檢查操作來驗證工程包是有效的,并滿足質(zhì)量要求。
install 安裝工程包到本地倉庫中,該倉庫可以作為本地其他工程的依賴。
deploy 拷貝最終的工程包到遠程倉庫中,以共享給其他開發(fā)人員和工程。

有一些與 Maven 生命周期相關(guān)的重要概念需要說明:

當(dāng)一個階段通過 Maven 命令調(diào)用時,例如 mvn compile,只有該階段之前以及包括該階段在內(nèi)的所有階段會被執(zhí)行。

不同的 maven 目標(biāo)將根據(jù)打包的類型(JAR / WAR / EAR),被綁定到不同的 Maven 生命周期階段。

在下面的例子中,我們將 maven-antrun-plugin:run 目標(biāo)添加到 Build 生命周期的一部分階段中。這樣我們可以顯示生命周期的文本信息。

我們已經(jīng)更新了 C:\MVN\project 目錄下的 pom.xml 文件。

<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname.projectgroup</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
  <execution>
   <id>id.validate</id>
   <phase>validate</phase>
   <goals>
     <goal>run</goal>
   </goals>
   <configuration>
     <tasks>
      <echo>validate phase</echo>
     </tasks>
   </configuration>
  </execution>
  <execution>
   <id>id.compile</id>
   <phase>compile</phase>
   <goals>
     <goal>run</goal>
   </goals>
   <configuration>
     <tasks>
      <echo>compile phase</echo>
     </tasks>
   </configuration>
  </execution>
  <execution>
   <id>id.test</id>
   <phase>test</phase>
   <goals>
     <goal>run</goal>
   </goals>
   <configuration>
     <tasks>
      <echo>test phase</echo>
     </tasks>
   </configuration>
  </execution>
  <execution>
     <id>id.package</id>
     <phase>package</phase>
     <goals>
      <goal>run</goal>
     </goals>
     <configuration>
     <tasks>
      <echo>package phase</echo>
     </tasks>
   </configuration>
  </execution>
  <execution>
   <id>id.deploy</id>
   <phase>deploy</phase>
   <goals>
     <goal>run</goal>
   </goals>
   <configuration>
   <tasks>
     <echo>deploy phase</echo>
   </tasks>
   </configuration>
  </execution>
</executions>
</plugin>
</plugins>
</build>
</project>

現(xiàn)在打開命令控制臺,跳轉(zhuǎn)到 pom.xml 所在目錄,并執(zhí)行以下 mvn 命令。

C:\MVN\project>mvn compile

Maven 將會開始處理并顯示直到編譯階段的構(gòu)建生命周期的各個階段。

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO]  task-segment: [compile]
[INFO] ------------------------------------------------------------------
[INFO] [antrun:run {execution: id.validate}]
[INFO] Executing tasks
   [echo] validate phase
[INFO] Executed tasks
[INFO] [resources:resources {execution: default-resources}]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\MVN\project\src\main\resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [antrun:run {execution: id.compile}]
[INFO] Executing tasks
   [echo] compile phase
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Sat Jul 07 20:18:25 IST 2012
[INFO] Final Memory: 7M/64M
[INFO] ------------------------------------------------------------------

Site 生命周期
Maven Site 插件一般用來創(chuàng)建新的報告文檔、部署站點等。

階段:

pre-site
site
post-site
site-deploy
在下面的例子中,我們將 maven-antrun-plugin:run 目標(biāo)添加到 Site 生命周期的所有階段中。這樣我們可以顯示生命周期的所有文本信息。

我們已經(jīng)更新了 C:\MVN\project 目錄下的 pom.xml 文件。

<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname.projectgroup</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
  <executions>
   <execution>
     <id>id.pre-site</id>
     <phase>pre-site</phase>
     <goals>
      <goal>run</goal>
     </goals>
     <configuration>
      <tasks>
        <echo>pre-site phase</echo>
      </tasks>
     </configuration>
   </execution>
   <execution>
     <id>id.site</id>
     <phase>site</phase>
     <goals>
     <goal>run</goal>
     </goals>
     <configuration>
      <tasks>
        <echo>site phase</echo>
      </tasks>
     </configuration>
   </execution>
   <execution>
     <id>id.post-site</id>
     <phase>post-site</phase>
     <goals>
      <goal>run</goal>
     </goals>
     <configuration>
      <tasks>
        <echo>post-site phase</echo>
      </tasks>
     </configuration>
   </execution>
   <execution>
     <id>id.site-deploy</id>
     <phase>site-deploy</phase>
     <goals>
      <goal>run</goal>
     </goals>
     <configuration>
      <tasks>
        <echo>site-deploy phase</echo>
      </tasks>
     </configuration>
   </execution>
  </executions>
</plugin>
</plugins>
</build>
</project>

現(xiàn)在打開命令控制臺,跳轉(zhuǎn)到 pom.xml 所在目錄,并執(zhí)行以下 mvn 命令。

C:\MVN\project>mvn site

Maven 將會開始處理并顯示直到 site 階段的 site 生命周期的各個階段。

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO]  task-segment: [site]
[INFO] ------------------------------------------------------------------
[INFO] [antrun:run {execution: id.pre-site}]
[INFO] Executing tasks
   [echo] pre-site phase
[INFO] Executed tasks
[INFO] [site:site {execution: default-site}]
[INFO] Generating "About" report.
[INFO] Generating "Issue Tracking" report.
[INFO] Generating "Project Team" report.
[INFO] Generating "Dependencies" report.
[INFO] Generating "Project Plugins" report.
[INFO] Generating "Continuous Integration" report.
[INFO] Generating "Source Repository" report.
[INFO] Generating "Project License" report.
[INFO] Generating "Mailing Lists" report.
[INFO] Generating "Plugin Management" report.
[INFO] Generating "Project Summary" report.
[INFO] [antrun:run {execution: id.site}]
[INFO] Executing tasks
   [echo] site phase
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Sat Jul 07 15:25:10 IST 2012
[INFO] Final Memory: 24M/149M
[INFO] ------------------------------------------------------------------```

以上就是本文關(guān)于Maven構(gòu)建生命周期詳細(xì)介紹的全部內(nèi)容,希望對大家有所幫助。歡迎參閱:Maven管理SpringBoot Profile詳解maven學(xué)習(xí)-初窺門徑、使用maven運行Java Main的三種方法解析等,如有不足之處,歡迎留言指出,感謝朋友們對本站的支持。

相關(guān)文章

  • Java處理異常2種機制關(guān)鍵字區(qū)別解析

    Java處理異常2種機制關(guān)鍵字區(qū)別解析

    這篇文章主要介紹了java處理異常2種機制關(guān)鍵字區(qū)別解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • js實現(xiàn)拖拽拼圖游戲

    js實現(xiàn)拖拽拼圖游戲

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)拖拽拼圖游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 基于Java語言實現(xiàn)Socket通信的實例

    基于Java語言實現(xiàn)Socket通信的實例

    今天小編就為大家分享一篇關(guān)于基于Java語言實現(xiàn)Socket通信的實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Spring Boot項目添加外部Jar包以及配置多數(shù)據(jù)源的完整步驟

    Spring Boot項目添加外部Jar包以及配置多數(shù)據(jù)源的完整步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot項目添加外部Jar包以及配置多數(shù)據(jù)源的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java實時監(jiān)控日志文件并輸出的方法詳解

    Java實時監(jiān)控日志文件并輸出的方法詳解

    這篇文章主要給大家介紹了關(guān)于Java實時監(jiān)控日志文件并輸出的方法,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • android顯示意圖激活另一個Activity的方法

    android顯示意圖激活另一個Activity的方法

    下面小編就為大家?guī)硪黄猘ndroid顯示意圖激活另一個Activity的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 手動模擬JDK動態(tài)代理的方法

    手動模擬JDK動態(tài)代理的方法

    這篇文章主要介紹了手動模擬JDK動態(tài)代理的方法,幫助大家更好的了解和學(xué)習(xí)Java 代理的相關(guān)知識,感興趣的朋友可以了解下
    2020-11-11
  • 原因分析IDEA導(dǎo)入Spring-kafka項目Gradle編譯失敗

    原因分析IDEA導(dǎo)入Spring-kafka項目Gradle編譯失敗

    這篇文章主要為大家介紹分析了IDEA導(dǎo)入Spring-kafka項目Gradle中編譯失敗原因及解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02
  • Intellij IDEA 斷點不可用報錯 No executable code found

    Intellij IDEA 斷點不可用報錯 No executable 

    這篇文章主要介紹了Intellij IDEA 斷點不可用報錯 No executable code found問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • java 實現(xiàn)反射 json動態(tài)轉(zhuǎn)實體類--fastjson

    java 實現(xiàn)反射 json動態(tài)轉(zhuǎn)實體類--fastjson

    這篇文章主要介紹了java 實現(xiàn)反射 json動態(tài)轉(zhuǎn)實體類--fastjson,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評論