溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Maven的生命周期和插件是什么

發(fā)布時間:2021-12-14 17:32:10 來源:億速云 閱讀:122 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇文章主要講解了“Maven的生命周期和插件是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Maven的生命周期和插件是什么”吧!

一個完整的項目構(gòu)建過程通常包括清理、編譯、測試、打包、集成測試、驗證、部署等步驟,Maven從中抽取了一套完善的、易擴展的生命周期。Maven的生命周期是抽象的,其中的具體任務(wù)都交由插件來完成。Maven為大多數(shù)構(gòu)建任務(wù)編寫并綁定了默認(rèn)的插件,如針對編譯的插件:maven-compiler-plugin。用戶也可自行配置或編寫插件。

1 . 三套生命周期

  Maven定義了三套生命周期:clean、default、site,每個生命周期都包含了一些階段(phase)。三套生命周期相互獨立,但各個生命周期中的phase卻是有順序的,且后面的phase依賴于前面的phase。執(zhí)行某個phase時,其前面的phase會依順序執(zhí)行,但不會觸發(fā)另外兩套生命周期中的任何phase。

1 . 1 clean生命周期

  1. pre-clean    :執(zhí)行清理前的工作;

  2. clean    :清理上一次構(gòu)建生成的所有文件;

  3. post-clean    :執(zhí)行清理后的工作

1 . 2 default生命周期

default生命周期是最核心的,它包含了構(gòu)建項目時真正需要執(zhí)行的所有步驟。

  1. validate

  2. initialize

  3. generate-sources

  4. process-sources

  5. generate-resources

  6. process-resources    :復(fù)制和處理資源文件到target目錄,準(zhǔn)備打包;

  7. compile    :編譯項目的源代碼;

  8. process-classes

  9. generate-test-sources

  10. process-test-sources

  11. generate-test-resources

  12. process-test-resources

  13. test-compile    :編譯測試源代碼;

  14. process-test-classes

  15. test    :運行測試代碼;

  16. prepare-package

  17. package    :打包成jar或者war或者其他格式的分發(fā)包;

  18. pre-integration-test

  19. integration-test

  20. post-integration-test

  21. verify

  22. install    :將打好的包安裝到本地倉庫,供其他項目使用;

  23. deploy    :將打好的包安裝到遠(yuǎn)程倉庫,供其他項目使用;

1 . 3 site生命周期

  1. pre-site

  2. site    :生成項目的站點文檔;

  3. post-site

  4. site-deploy    :發(fā)布生成的站點文檔

2 . Maven的插件

Maven的核心文件很小,主要的任務(wù)都是由插件來完成。定位到:%本地倉庫%\org\apache\maven\plugins,可以看到一些下載好的插件:

Maven的生命周期和插件是什么

Maven官網(wǎng)上有更詳細(xì)的官方插件列表:

Maven的生命周期和插件是什么

每個插件都有哪些個目標(biāo),官方文檔有更詳細(xì)的說明:Maven Plugins

Maven的生命周期和插件是什么

3 . 1 內(nèi)置的綁定

  Maven對一些生命周期的階段(phase)默認(rèn)綁定了插件目標(biāo),因為不同的項目有jar、war、pom等不同的打包方式,因此對應(yīng)的有不同的綁定關(guān)系,其中針對default生命周期的jar包打包方式的綁定關(guān)系如下:

第二列中,冒號后面即是綁定的插件目標(biāo),冒號前面是插件的前綴(prefix),是配置和使用插件的一種簡化方式。Plugin Prefix

3 . 2 自定義綁定

  用戶可以根據(jù)需要將任何插件目標(biāo)綁定到任何生命周期的階段,如:將maven-source-plugin的jar-no-fork目標(biāo)綁定到default生命周期的package階段,這樣,以后在執(zhí)行mvn package命令打包項目時,在package階段之后會執(zhí)行源代碼打包,生成如:ehcache-core-2.5.0-sources.jar形式的源碼包。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.2.1</version>
            <executions>
                <execution>
                    <id>attach-source</id>
                    <phase>package</phase><!-- 要綁定到的生命周期的階段 -->
                    <goals>
                        <goal>jar-no-fork</goal><!-- 要綁定的插件的目標(biāo) -->
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
    ……
</build>

4 . 配置插件

Maven插件高度易擴展,可以方便的進(jìn)行自定義配置。如:配置maven-compiler-plugin插件編譯源代碼的JDK版本為1.7:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

也可以對插件的各個目標(biāo)進(jìn)行更具體的配置。Configuring Plug-ins

5 . 插件倉庫

跟其他構(gòu)件一樣,插件也是根據(jù)坐標(biāo)存儲在Maven倉庫中。超級POM中Maven配置的默認(rèn)插件遠(yuǎn)程倉庫如下:

<pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Central Repository</name>
      <url>http://repo.maven.apache.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
    </pluginRepository>
</pluginRepositories>

感謝各位的閱讀,以上就是“Maven的生命周期和插件是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Maven的生命周期和插件是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI