大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Maven教程
Maven常用命令應(yīng)用
Maven修改倉庫地址
使用Eclipse創(chuàng)建Maven項(xiàng)目
Maven插件
Maven打包
Maven項(xiàng)目導(dǎo)入及轉(zhuǎn)換

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

Maven 的構(gòu)建機(jī)制,是圍繞生命周期(lifecycle)這個(gè)概念進(jìn)行構(gòu)建的。這意味著構(gòu)建和發(fā)布一個(gè)項(xiàng)目的整個(gè)過程是預(yù)先被定義了的。采用這種方式進(jìn)行項(xiàng)目構(gòu)建,可以讓用戶在學(xué)習(xí)很少的一部分命令的情況下通過 POM 對(duì)項(xiàng)目進(jìn)行構(gòu)建。

Maven 本質(zhì)上是一個(gè)插件框架,它的核心并不執(zhí)行任何具體的構(gòu)建任務(wù),僅僅定義了抽象的生命周期,所有這些任務(wù)都交給插件來完成的。將生命周期的階段與插件目標(biāo)互相綁定,就可以在特定的階段完成具體的構(gòu)建任務(wù), Maven 的生命周期是抽象的,這意味著生命周期本身不做任何實(shí)際的工作,在 Maven 的設(shè)計(jì)中,實(shí)際的任務(wù)都交由插件來完成。生命周期抽象了構(gòu)建的各個(gè)步驟,定義了它們的次序,利用插件機(jī)制具體實(shí)現(xiàn)。每個(gè)構(gòu)建步驟都可以綁定一個(gè)或多個(gè)插件行為。

在 Maven 中,內(nèi)建了三種構(gòu)建生命周期:default、clean、site。default 生命周期處理項(xiàng)目的部署,clean 生命周期處理項(xiàng)目構(gòu)建后的清理工作,site 生命周期對(duì)項(xiàng)目的站點(diǎn)文檔進(jìn)行生成。

Maven 的生命周期,又是由不同的階段(phase)構(gòu)成的。每一個(gè)生命周期,都包含了一系列的階段,每一個(gè)階段都表示了生命周期中的一個(gè)狀態(tài)。比如,對(duì)于 default 生命周期來說,包含了如下的這些階段:

階段

處理

描述

驗(yàn)證 validate

驗(yàn)證項(xiàng)目

驗(yàn)證項(xiàng)目是否正確且所有必須信息是可用的

編譯 compile

執(zhí)行編譯

源代碼編譯在此階段完成

測試 Test

測試

使用適當(dāng)?shù)膯卧獪y試框架(例如JUnit)運(yùn)行測試。

包裝 package

打包

創(chuàng)建JAR/WAR包如在 pom.xml 中定義提及的包

檢查 verify

檢查

對(duì)集成測試的結(jié)果進(jìn)行檢查,以保證質(zhì)量達(dá)標(biāo)

安裝 install

安裝

安裝打包的項(xiàng)目到本地倉庫,以供其他項(xiàng)目使用

部署 deploy

部署

拷貝最終的工程包到遠(yuǎn)程倉庫中,以共享給其他開發(fā)人員和工程

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

Maven 有以下三個(gè)標(biāo)準(zhǔn)的生命周期:

? clean:項(xiàng)目清理的處理

? default(或 build):項(xiàng)目部署的處理

? site:項(xiàng)目站點(diǎn)文檔創(chuàng)建的處理

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

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

例如,考慮下面的命令:

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

mvn clean dependency:copy-dependencies package

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

Clean 生命周期

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

? pre-clean:執(zhí)行一些需要在clean之前完成的工作

? clean:移除所有上一次構(gòu)建生成的文件

? post-clean:執(zhí)行一些需要在clean之后立刻完成的工作

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

pre-clean, clean

如果我們運(yùn)行 mvn post-clean ,則運(yùn)行以下三個(gè)生命周期階段:

pre-clean, clean, post-clean

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

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

我們已經(jīng)在 C:\MVN\project 目錄下創(chuàng)建了一個(gè) 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)在打開命令控制臺(tái),跳轉(zhuǎn)到 pom.xml 所在目錄,并執(zhí)行下面的 mvn 命令。

C:\MVN\project>mvn post-clean

Maven 將會(huì)開始處理并顯示 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 (Build) 生命周期

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

生命周期階段

描述

validate(校驗(yàn))

校驗(yàn)項(xiàng)目是否正確并且所有必要的信息可以完成項(xiàng)目的構(gòu)建過程。

initialize(初始化)

初始化構(gòu)建狀態(tài),比如設(shè)置屬性值。

 

generate-sources(生成源代碼)

生成包含在編譯階段中的任何源代碼。

process-sources(處理源代碼)

處理源代碼,比如說,過濾任意值。

generate-resources(生成資源文件)

生成將會(huì)包含在項(xiàng)目包中的資源文件。

process-resources (處理資源文件)

復(fù)制和處理資源到目標(biāo)目錄,為打包階段最好準(zhǔn)備。

compile(編譯)

編譯項(xiàng)目的源代碼。

process-classes(處理類文件)

處理編譯生成的文件,比如說對(duì)Java class文件做字節(jié)碼改善優(yōu)化。

generate-test-sources(生成測試源代碼)

生成包含在編譯階段中的任何測試源代碼。

process-test-sources(處理測試源代碼)

處理測試源代碼,比如說,過濾任意值。

generate-test-resources(生成測試資源文件)

為測試創(chuàng)建資源文件。

process-test-resources(處理測試資源文件)

復(fù)制和處理測試資源到目標(biāo)目錄。

test-compile(編譯測試源碼)

編譯測試源代碼到測試目標(biāo)目錄。

process-test-classes(處理測試類文件)

處理測試源碼編譯生成的文件。

test(測試)

使用合適的單元測試框架運(yùn)行測試(Juint是其中之一)。

prepare-package(準(zhǔn)備打包)

在實(shí)際打包之前,執(zhí)行任何的必要的操作為打包做準(zhǔn)備。

package(打包)

將編譯后的代碼打包成可分發(fā)格式的文件,比如JAR、WAR或者EAR文件。

pre-integration-test(集成測試前)

在執(zhí)行集成測試前進(jìn)行必要的動(dòng)作。比如說,搭建需要的環(huán)境。

integration-test(集成測試)

處理和部署項(xiàng)目到可以運(yùn)行集成測試環(huán)境中。

post-integration-test(集成測試后)

在執(zhí)行集成測試完成后進(jìn)行必要的動(dòng)作。比如說,清理集成測試環(huán)境。

verify (驗(yàn)證)

運(yùn)行任意的檢查來驗(yàn)證項(xiàng)目包有效且達(dá)到質(zhì)量標(biāo)準(zhǔn)。

install(安裝)

安裝項(xiàng)目包到本地倉庫,這樣項(xiàng)目包可以用作其他本地項(xiàng)目的依賴。

deploy(部署)

將最終的項(xiàng)目包復(fù)制到遠(yuǎn)程倉庫中與其他開發(fā)者和項(xiàng)目共享。

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

當(dāng)一個(gè)階段通過 Maven 命令調(diào)用時(shí),例如 mvn compile,只有該階段之前以及包括該階段在內(nèi)的所有階段會(huì)被執(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)在打開命令控制臺(tái),跳轉(zhuǎn)到 pom.xml 所在目錄,并執(zhí)行以下 mvn 命令。

C:\MVN\project>mvn compile

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

[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

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

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

mvn clean deploy

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

Site生命周期

Maven Site 插件一般用來創(chuàng)建新的報(bào)告文檔、部署站點(diǎn)等。

? pre-site:執(zhí)行一些需要在生成站點(diǎn)文檔之前完成的工作

? site:生成項(xiàng)目的站點(diǎn)文檔

? post-site: 執(zhí)行一些需要在生成站點(diǎn)文檔之后完成的工作,并且為部署做準(zhǔn)備

? site-deploy:將生成的站點(diǎn)文檔部署到特定的服務(wù)器上

這里經(jīng)常用到的是site階段和site-deploy階段,用以生成和發(fā)布Maven站點(diǎn),這可是Maven相當(dāng)強(qiáng)大的功能,Manager比較喜歡,文檔及統(tǒng)計(jì)數(shù)據(jù)自動(dòng)生成,很好看。 在下面的例子中,我們將 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)在打開命令控制臺(tái),跳轉(zhuǎn)到 pom.xml 所在目錄,并執(zhí)行以下 mvn 命令。

C:\MVN\project>mvn site

Maven 將會(huì)開始處理并顯示直到 site 階段的 site 生命周期的各個(gè)階段。

[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] ------------------------------------------------------------------```

 

全部教程
主站蜘蛛池模板: 国内主播大秀福利视频在线看 | 奇米影视777777 | 亚洲偷图色综合色就色 | 亚洲欧美日韩高清一区二区三区 | a一级毛片视频免费看 | 欧美午夜视频 | 亚洲精品美女久久久aaa | 两性视频久久 | 美女在线看永久免费网址 | 久久噜噜噜久久亚洲va久 | 四虎精品影院永久在线播放 | 国产精品午夜高清在线观看 | 亚洲国产一区二区三区a毛片 | 欧美一级毛片无遮 | 久久er国产精品免费观看1 | 久久天天躁狠狠躁狠狠躁 | 国产色婷婷精品综合在线手机播放 | 狠狠干图片 | 91在线观| 四虎国产欧美成人影院 | 成人国产在线视频在线观看 | 天天干天天操天天射 | 久久久久综合中文字幕 | 中文字幕在线视频免费 | 欧美中文字幕一区 | 午夜在线视频一区二区三区 | 欧美日韩久久中文字幕 | 日日摸夜夜嗷嗷叫日日拍 | 国产精品久久久久久久久免费hd | 91精品国产乱码在线观看 | 久久免费视频在线观看 | 999成人精品视频在线 | 香蕉看片 | 亚洲国产成人久久一区久久 | 中文字幕亚洲欧美 | 亚洲爱爱久久精品 | 日韩欧美国产一区二区三区四区 | 国产精品永久免费视频 | 欧美在线日韩在线 | 亚洲视频一区在线观看 | 香蕉视频在线观看视频 |