黄色电影一区二区,韩国少妇自慰A片免费看,精品人妻少妇一级毛片免费蜜桃AV按摩师 ,超碰 香蕉

Maven 構(gòu)建生命周期

maven 構(gòu)建生命周期

maven 構(gòu)建生命周期定義了一個項目構(gòu)建跟發(fā)布的過程。

一個典型的 maven 構(gòu)建(build)生命周期是由以下幾個階段的序列組成的:

階段 處理 描述
驗證 validate 驗證項目 驗證項目是否正確且所有必須信息是可用的
編譯 compile 執(zhí)行編譯 源代碼編譯在此階段完成
測試 test 測試 使用適當?shù)膯卧獪y試框架(例如junit)運行測試。
包裝 package 打包 創(chuàng)建jar/war包如在 pom.xml 中定義提及的包
檢查 verify 檢查 對集成測試的結(jié)果進行檢查,以保證質(zhì)量達標
安裝 install 安裝 安裝打包的項目到本地倉庫,以供其他項目使用
部署 deploy 部署 拷貝最終的工程包到遠程倉庫中,以共享給其他開發(fā)人員和工程

為了完成 default 生命周期,這些階段(包括其他未在上面羅列的生命周期階段)將被按順序地執(zhí)行。

maven 有以下三個標準的生命周期:

  • clean:項目清理的處理
  • default(或 build):項目部署的處理
  • site:項目站點文檔創(chuàng)建的處理

構(gòu)建階段由插件目標構(gòu)成

一個插件目標代表一個特定的任務(比構(gòu)建階段更為精細),這有助于項目的構(gòu)建和管理。這些目標可能被綁定到多個階段或者無綁定。不綁定到任何構(gòu)建階段的目標可以在構(gòu)建生命周期之外通過直接調(diào)用執(zhí)行。這些目標的執(zhí)行順序取決于調(diào)用目標和構(gòu)建階段的順序。

例如,考慮下面的命令:

clean 和 pakage 是構(gòu)建階段,dependency:copy-dependencies 是目標

mvn clean dependency:copy-dependencies package

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

 

1. clean 生命周期

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

  • pre-clean:執(zhí)行一些需要在clean之前完成的工作
  • clean:移除所有上一次構(gòu)建生成的文件
  • post-clean:執(zhí)行一些需要在clean之后立刻完成的工作

mvn clean 中的 clean 就是上面的 clean,在一個生命周期中,運行某個階段的時候,它之前的所有階段都會被運行,也就是說,如果執(zhí)行 mvn clean 將運行以下兩個生命周期階段:

pre-clean, clean

如果我們運行 mvn post-clean ,則運行以下三個生命周期階段:

pre-clean, clean, post-clean

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

在下面的例子中,我們將 maven-antrun-plugin:run 目標添加到 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í)行任何操作。

 

2. default (build) 生命周期

這是 maven 的主要生命周期,被用于構(gòu)建應用,包括下面的 23 個階段:

生命周期階段 描述
validate(校驗) 校驗項目是否正確并且所有必要的信息可以完成項目的構(gòu)建過程。
initialize(初始化) 初始化構(gòu)建狀態(tài),比如設置屬性值。
generate-sources(生成源代碼) 生成包含在編譯階段中的任何源代碼。
process-sources(處理源代碼) 處理源代碼,比如說,過濾任意值。
generate-resources(生成資源文件) 生成將會包含在項目包中的資源文件。
process-resources (處理資源文件) 復制和處理資源到目標目錄,為打包階段最好準備。
compile(編譯) 編譯項目的源代碼。
process-classes(處理類文件) 處理編譯生成的文件,比如說對java class文件做字節(jié)碼改善優(yōu)化。
generate-test-sources(生成測試源代碼) 生成包含在編譯階段中的任何測試源代碼。
process-test-sources(處理測試源代碼) 處理測試源代碼,比如說,過濾任意值。
generate-test-resources(生成測試資源文件) 為測試創(chuàng)建資源文件。
process-test-resources(處理測試資源文件) 復制和處理測試資源到目標目錄。
test-compile(編譯測試源碼) 編譯測試源代碼到測試目標目錄.
process-test-classes(處理測試類文件) 處理測試源碼編譯生成的文件。
test(測試) 使用合適的單元測試框架運行測試(juint是其中之一)。
prepare-package(準備打包) 在實際打包之前,執(zhí)行任何的必要的操作為打包做準備。
package(打包) 將編譯后的代碼打包成可分發(fā)格式的文件,比如jar、war或者ear文件。
pre-integration-test(集成測試前) 在執(zhí)行集成測試前進行必要的動作。比如說,搭建需要的環(huán)境。
integration-test(集成測試) 處理和部署項目到可以運行集成測試環(huán)境中。
post-integration-test(集成測試后) 在執(zhí)行集成測試完成后進行必要的動作。比如說,清理集成測試環(huán)境。
verify (驗證) 運行任意的檢查來驗證項目包有效且達到質(zhì)量標準。
install(安裝) 安裝項目包到本地倉庫,這樣項目包可以用作其他本地項目的依賴。
deploy(部署) 將最終的項目包復制到遠程倉庫中與其他開發(fā)者和項目共享。

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

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

不同的 maven 目標將根據(jù)打包的類型(jar / war / ear),被綁定到不同的 maven 生命周期階段。

在下面的例子中,我們將 maven-antrun-plugin:run 目標添加到 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] ------------------------------------------------------------------

命令行調(diào)用

在開發(fā)環(huán)境中,使用下面的命令去構(gòu)建、安裝工程到本地倉庫

mvn install

這個命令在執(zhí)行 install 階段前,按順序執(zhí)行了 default 生命周期的階段 (validate,compile,package,等等),我們只需要調(diào)用最后一個階段,如這里是 install。

在構(gòu)建環(huán)境中,使用下面的調(diào)用來純凈地構(gòu)建和部署項目到共享倉庫中

mvn clean deploy

這行命令也可以用于多模塊的情況下,即包含多個子項目的項目,maven 會在每一個子項目執(zhí)行 clean 命令,然后再執(zhí)行 deploy 命令。

 

3. site 生命周期

maven site 插件一般用來創(chuàng)建新的報告文檔、部署站點等。

  • pre-site:執(zhí)行一些需要在生成站點文檔之前完成的工作
  • site:生成項目的站點文檔
  • post-site: 執(zhí)行一些需要在生成站點文檔之后完成的工作,并且為部署做準備
  • site-deploy:將生成的站點文檔部署到特定的服務器上

這里經(jīng)常用到的是site階段和site-deploy階段,用以生成和發(fā)布maven站點,這可是maven相當強大的功能,manager比較喜歡,文檔及統(tǒng)計數(shù)據(jù)自動生成,很好看。 在下面的例子中,我們將 maven-antrun-plugin:run 目標添加到 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] ------------------------------------------------------------------```

下一節(jié):maven 構(gòu)建配置文件

maven 教程

相關(guān)文章