maven打war包的過程中,都用了哪些插件呢?


一、maven生命周期

http://ifeve.com/introduction-to-the-lifecycle/

 

https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

 

1.內置的三個生命周期

我這邊的簡單理解是:

首先一共有三個內置的生命周期,一個為clean,一個為default,一個為site。

There are three built-in build lifecycles: default, clean and site. The default lifecycle handles your project deployment, the clean lifecycle handles project cleaning, while the site lifecycle handles the creation of your project's site documentation.

 

 

2.生命周期的組成

一個生命周期包含了許多階段,比如compile階段,install階段等等。階段是有順序的,典型的如下:

 

 

 3.goal是什么

在講階段之前,先說下goal。

 

goal可以簡單理解為一個功能,功能是由插件實現的。

牛逼的插件可以有很多個goal,當然,我們不鼓勵一個插件做了所有的事,畢竟unix哲學嘛。

比如compile插件,org.apache.maven.plugins:maven-compiler-plugin。

它既可以編譯main下面的代碼,也可以編譯test下面的代碼,這里就被分成了兩個goal:

compile和testCompile。

當然,也有個直觀介紹(idea中的maven視圖),看下圖:

 

 

4.階段的組成

每個階段由0到多個目標(goal)組成。

但是,goal可以選擇不綁定到階段,也可以綁定到多個階段。

 

所以執行整個生命周期的過程,就是按照順序,執行各個phase,具體到每個phase的時候,按順序執行綁定到該phase的goal。

以打jar包為例,默認maven已經幫我們在每個phase中綁定了goal,如下:

 

 5.如果我們想在某個階段新增goal怎么辦呢?

可以像下面這樣,在<phase>元素中指定:

以上配置<phase>中配置了process-test-resources階段,該階段我們附加了一個goal,那就是time。

再看下面的配置:

<build> 
  <plugins> 
    <plugin> 
      <groupId>org.apache.maven.plugins</groupId>  
      <artifactId>maven-source-plugin</artifactId>  
      <version>2.1</version>  
      <configuration> 
        <attach>true</attach> 
      </configuration>  
      <executions> 
        <execution> 
          <phase>compile</phase>  
          <goals> 
            <goal>jar</goal> 
          </goals> 
        </execution> 
      </executions> 
    </plugin> 
  </plugins> 
</build>
以上配置在<phase>中指定了compile,即在compile階段附加一個goal,該goal為當前插件的jar。

 

 

二、default生命周期中打包時默認綁定的插件

https://maven.apache.org/ref/3.6.0/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging

 

專門對比了下jar包和war包,可以發現只有打包階段用的插件不一樣:

 

 這個可以驗證,在idea中,一個默認的maven web工程,在maven視圖中,plugins中顯示的插件如下:

可以看到,剩下的幾個插件,正好是war包pom中默認綁定的那幾個插件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM