maven 命令執行週期

        maven打印的命令:

mvn -Dtest -DfailIfNoTests=false -e package

 

       我們用maven打war包的時候,打包階段將會創建一個war文件。但是,在它之前的目標做什麼呢,像compiler:compilesurefire:test?在Maven經過它生命週期中package之前的階段的時候,這些目標被運行了;Maven執行一個階段的時候,它首先會有序的執行前面的所有階段,到命令行指定的那個階段爲止。每個階段對應了零個或者多個目標。我們沒有進行任何插件配置或者定製,所以這個例子綁定了一組標準插件的目標到默認的生命週期。當Maven經過以package爲結尾的默認生命週期的時候,下面的目標按順序被執行:

resources:resources

Resources插件的resources目標綁定到了resources 階段。這個目標複製src/main/resources下的所有資源和其它任何配置的資源目錄,到輸出目錄。

compiler:compile

Compiler插件的compile目標綁定到了compile 階段。這個目標編譯src/main/java下的所有源代碼和其他任何配置的資源目錄,到輸出目錄。

resources:testResources

Resources插件的testResources目標綁定到了test-resources 階段。這個目標複製src/test/resources下的所有資源和其它任何的配置的測試資源目錄,到測試輸出目錄。

compiler:testCompile

Compiler插件的testCompile目標綁定到了test-compile 階段。這個目標編譯src/test/java下的測試用例和其它任何的配置的測試資源目錄,到測試輸出目錄。

surefire:test

Surefire插件的test目標綁定到了test 階段。這個目標運行所有的測試並且創建那些捕捉詳細測試結果的輸出文件。默認情況下,如果有測試失敗,這個目標會終止。

jar:jar

Jar插件的jar目標綁定到了package 階段。這個目標把輸出目錄打包成JAR文件。

總結得來說,當我們運行mvn package,Maven運行到打包爲止的所有階段,在Maven沿着生命週期一步步向前的過程中,它運行綁定在每個階段上的所有目標。你也可以像下面這樣顯式的指定一系列插件目標,以得到同樣的結果:

mvn resources:resources \
    compiler:compile \
    resources:testResources \
    compiler:testCompile \
    surefire:test \
    jar:jar

運行package階段能很好的跟蹤一個特定的構建中包含的所有目標,它也允許每個項目使用Maven來遵循一組定義明確的標準。而這個生命週期能讓開發人員從一個Maven項目跳到另外一個Maven項目,而不用知道太多每個項目構建的細節。如果你能夠構建一個Maven項目,那麼你就能構建所有的Maven項目。

 

一個常用的pom文件:

 

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>boss</groupId>
  <artifactId>boss</artifactId>
  <packaging>war</packaging>
  <version>0.1</version>
  <description></description>
 
  <repositories>
    <repository>
      <id>scmserver-releases</id>
      <name>scmserver-releases</name>
      <url>http://192.168.***.***:8080/artifactory/repo</url>
    </repository>
  </repositories>
  <properties>
   <java.version>1.6</java.version>
   <junit.version>3.8.2</junit.version>
   <log4j.version>1.2.14</log4j.version>
  </properties>
 
  <pluginRepositories>
    <pluginRepository>
      <id>scmserver-releases</id>
      <name>scmserver-releases</name>
      <url>http://192.168.***.***:8080/artifactory/repo</url>
    </pluginRepository>
  </pluginRepositories>
   <!--這個地方比較重要,資源文件分佈在不同的文件夾下面,非默認目錄-->
  <build>
   <finalName>boss</finalName>   
   <sourceDirectory>src/main/java</sourceDirectory>
   <resources>
    <resource>
     <directory>src/main/java</directory>
     <includes>
      <include>**/*.xml</include>
     </includes>
    </resource>
    <resource>
     <directory>src/main/resources</directory>
    </resource>
   </resources>
   <!-- 指定java源文件編譯的版本以及編碼格式 -->
   <plugins> 
     <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
         <source>${java.version}</source> 
         <target>${java.version}</target>
         <encoding>UTF-8</encoding> 
       </configuration> 
     </plugin>
   </plugins> 
  </build>
  <dependencies>
 <dependency>
   <groupId>org.apache.struts</groupId>
   <artifactId>struts2-config-browser-plugin</artifactId>
   <version>${struts.version}</version>
   <scope>test</scope>
 </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4j.version}</version>
    </dependency>

  </dependencies>
</project>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章