0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

最常用的Maven插件有哪些詳細(xì)資料介紹

嵌入式單片機 ? 來源:未知 ? 2019-08-03 11:40 ? 次閱讀

我們都知道Maven本質(zhì)上是一個插件框架,它的核心并不執(zhí)行任何具體的構(gòu)建任務(wù),所有這些任務(wù)都交給插件來完成,例如編譯源代碼是由maven- compiler-plugin完成的。

接下來介紹一些最常用的Maven插件,在不同的環(huán)境下它們各自都有其出色的表現(xiàn),熟練地使用它們能讓你的日常構(gòu)建工作事半功倍。

1.1 maven-antrun-plugin

http://maven.apache.org/plugins/maven-antrun-plugin/

maven-antrun-plugin能讓用戶在Maven項目中運行Ant任務(wù)。用戶可以直接在該插件的配置以Ant的方式編寫Target, 然后交給該插件的run目標(biāo)去執(zhí)行。在一些由Ant往Maven遷移的項目中,該插件尤其有用。此外當(dāng)你發(fā)現(xiàn)需要編寫一些自定義程度很高的任務(wù),同時又覺得Maven不夠靈活時,也可以以Ant的方式實現(xiàn)之。maven-antrun-plugin的run目標(biāo)通常與生命周期綁定運行。

1.2maven-archetype-plugin

http://maven.apache.org/archetype/maven-archetype-plugin/

Archtype指項目的骨架,Maven初學(xué)者最開始執(zhí)行的Maven命令可能就是mvn archetype:generate,這實際上就是讓maven-archetype-plugin生成一個很簡單的項目骨架,幫助開發(fā)者快速上手??赡芤灿腥丝吹揭恍┪臋n寫了mvn archetype:create, 但實際上create目標(biāo)已經(jīng)被棄用了,取而代之的是generate目標(biāo),該目標(biāo)使用交互式的方式提示用戶輸入必要的信息以創(chuàng)建項目,體驗更好。maven-archetype-plugin還有一些其他目標(biāo)幫助用戶自己定義項目原型,例如你由一個產(chǎn)品需要交付給很多客戶進(jìn)行二次開發(fā),你就可以為他們提供一個Archtype,幫助他們快速上手。

1.3maven-assembly-plugin

http://maven.apache.org/plugins/maven-assembly-plugin/

maven-assembly-plugin的用途是制作項目分發(fā)包,該分發(fā)包可能包含了項目的可執(zhí)行文件、源代碼、readme、平臺腳本等等。 maven-assembly-plugin支持各種主流的格式如zip、tar.gz、jar和war等,具體打包哪些文件是高度可控的,例如用戶可以 按文件級別的粒度、文件集級別的粒度、模塊級別的粒度、以及依賴級別的粒度控制打包,此外,包含和排除配置也是支持的。maven-assembly- plugin要求用戶使用一個名為assembly.xml的元數(shù)據(jù)文件來表述打包,它的single目標(biāo)可以直接在命令行調(diào)用,也可以被綁定至生命周期。

1.4maven-dependency-plugin

http://maven.apache.org/plugins/maven-dependency-plugin/

maven-dependency-plugin最大的用途是幫助分析項目依賴,dependency:list能夠列出項目最終解析到的依賴列表,dependency:tree能進(jìn)一步的描繪項目依賴樹,dependency:analyze可以告訴你項目依賴潛在的問題,如果你有直接使用到的卻未聲明的依賴,該目標(biāo)就會發(fā)出警告。maven-dependency-plugin還有很多目標(biāo)幫助你操作依賴文件,例如dependency:copy-dependencies能將項目依賴從本地Maven倉庫復(fù)制到某個特定的文件夾下面。

1.5maven-enforcer-plugin

http://maven.apache.org/plugins/maven-enforcer-plugin/

在一個稍大一點的組織或團隊中,你無法保證所有成員都熟悉Maven,那他們做一些比較愚蠢的事情就會變得很正常,例如給項目引入了外部的 SNAPSHOT依賴而導(dǎo)致構(gòu)建不穩(wěn)定,使用了一個與大家不一致的Maven版本而經(jīng)常抱怨構(gòu)建出現(xiàn)詭異問題。maven-enforcer- plugin能夠幫助你避免之類問題,它允許你創(chuàng)建一系列規(guī)則強制大家遵守,包括設(shè)定Java版本、設(shè)定Maven版本、禁止某些依賴、禁止 SNAPSHOT依賴。只要在一個父POM配置規(guī)則,然后讓大家繼承,當(dāng)規(guī)則遭到破壞的時候,Maven就會報錯。除了標(biāo)準(zhǔn)的規(guī)則之外,你還可以擴展該插 件,編寫自己的規(guī)則。maven-enforcer-plugin的enforce目標(biāo)負(fù)責(zé)檢查規(guī)則,它默認(rèn)綁定到生命周期的validate階段。

1.6maven-help-plugin

http://maven.apache.org/plugins/maven-help-plugin/

maven-help-plugin是一個小巧的輔助工具,最簡單的help:system可以打印所有可用的環(huán)境變量和Java系統(tǒng)屬性。help:effective-pom和help:effective-settings最 為有用,它們分別打印項目的有效POM和有效settings,有效POM是指合并了所有父POM(包括Super POM)后的XML,當(dāng)你不確定POM的某些信息從何而來時,就可以查看有效POM。有效settings同理,特別是當(dāng)你發(fā)現(xiàn)自己配置的 settings.xml沒有生效時,就可以用help:effective-settings來驗證。此外,maven-help-plugin的describe目標(biāo)可以幫助你描述任何一個Maven插件的信息,還有all-profiles目標(biāo)和active-profiles目標(biāo)幫助查看項目的Profile。

1.7maven-release-plugin

http://maven.apache.org/plugins/maven-release-plugin/

maven-release-plugin的用途是幫助自動化項目版本發(fā)布,它依賴于POM中的SCM信息。release:prepare用來準(zhǔn)備版本發(fā)布,具體的工作包括檢查是否有未提交代碼、檢查是否有SNAPSHOT依賴、升級項目的SNAPSHOT版本至RELEASE版本、為項目打標(biāo)簽等等。release:perform則 是簽出標(biāo)簽中的RELEASE源碼,構(gòu)建并發(fā)布。版本發(fā)布是非?,嵥榈墓ぷ鳎婕傲烁鞣N檢查,而且由于該工作僅僅是偶爾需要,因此手動操作很容易遺漏一些細(xì)節(jié),maven-release-plugin讓該工作變得非??焖俸啽?,不易出錯。maven-release-plugin的各種目標(biāo)通常直接在 命令行調(diào)用,因為版本發(fā)布顯然不是日常構(gòu)建生命周期的一部分。

1.8maven-resources-plugin

http://maven.apache.org/plugins/maven-resources-plugin/

為了使項目結(jié)構(gòu)更為清晰,Maven區(qū)別對待Java代碼文件和資源文件,maven-compiler-plugin用來編譯Java代碼,maven-resources-plugin則用來處理資源文件。默認(rèn)的主資源文件目錄是src/main/resources,很多用戶會需要添加額外的資源文件目錄,這個時候就可以通過配置maven-resources-plugin來實現(xiàn)。此外,資源文件過濾也是Maven的一大特性,你可以在資源文件中使用${propertyName}形式的Maven屬性,然后配置maven-resources-plugin開啟對資源文件的過濾,之后就可以針對不同環(huán)境通過命令行或者Profile傳入屬性的值,以實現(xiàn)更為靈活的構(gòu)建。

1.9maven-surefire-plugin

http://maven.apache.org/plugins/maven-surefire-plugin/

可能是由于歷史的原因,Maven 2/3中用于執(zhí)行測試的插件不是maven-test-plugin,而是maven-surefire-plugin。其實大部分時間內(nèi),只要你的測試 類遵循通用的命令約定(以Test結(jié)尾、以TestCase結(jié)尾、或者以Test開頭),就幾乎不用知曉該插件的存在。然而在當(dāng)你想要跳過測試、排除某些 測試類、或者使用一些TestNG特性的時候,了解maven-surefire-plugin的一些配置選項就很有用了。例如 mvn test -Dtest=FooTest 這樣一條命令的效果是僅運行FooTest測試類,這是通過控制maven-surefire-plugin的test參數(shù)實現(xiàn)的。

1.10build-helper-maven-plugin

http://mojo.codehaus.org/build-helper-maven-plugin/

Maven默認(rèn)只允許指定一個主Java代碼目錄和一個測試Java代碼目錄,雖然這其實是個應(yīng)當(dāng)盡量遵守的約定,但偶爾你還是會希望能夠指定多個 源碼目錄(例如為了應(yīng)對遺留項目),build-helper-maven-plugin的add-source目標(biāo)就是服務(wù)于這個目的,通常它被綁定到默認(rèn)生命周期的generate-sources階段以添加額外的源碼目錄。需要強調(diào)的是,這種做法還是不推薦的,因為它破壞了 Maven的約定,而且可能會遇到其他嚴(yán)格遵守約定的插件工具無法正確識別額外的源碼目錄。

build-helper-maven-plugin的另一個非常有用的目標(biāo)是attach-artifact,使用該目標(biāo)你可以以classifier的形式選取部分項目文件生成附屬構(gòu)件,并同時install到本地倉庫,也可以deploy到遠(yuǎn)程倉庫。

1.11exec-maven-plugin

http://mojo.codehaus.org/exec-maven-plugin/

exec-maven-plugin很好理解,顧名思義,它能讓你運行任何本地的系統(tǒng)程序,在某些特定情況下,運行一個Maven外部的程序可能就是最簡單的問題解決方案,這就是exec:exec的用途,當(dāng)然,該插件還允許你配置相關(guān)的程序運行參數(shù)。除了exec目標(biāo)之外,exec-maven-plugin還提供了一個java目標(biāo),該目標(biāo)要求你 提供一個mainClass參數(shù),然后它能夠利用當(dāng)前項目的依賴作為classpath,在同一個JVM中運行該mainClass。有時候,為了簡單的 演示一個命令行Java程序,你可以在POM中配置好exec-maven-plugin的相關(guān)運行參數(shù),然后直接在命令運行 mvn exec:java 以查看運行效果。

1.12jetty-maven-plugin

http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin

在進(jìn)行Web開發(fā)的時候,打開瀏覽器對應(yīng)用進(jìn)行手動的測試幾乎是無法避免的,這種測試方法通常就是將項目打包成war文件,然后部署到Web容器 中,再啟動容器進(jìn)行驗證,這顯然十分耗時。為了幫助開發(fā)者節(jié)省時間,jetty-maven-plugin應(yīng)運而生,它完全兼容 Maven項目的目錄結(jié)構(gòu),能夠周期性地檢查源文件,一旦發(fā)現(xiàn)變更后自動更新到內(nèi)置的Jetty Web容器中。做一些基本配置后(例如Web應(yīng)用的contextPath和自動掃描變更的時間間隔),你只要執(zhí)行 mvn jetty:run,然后在IDE中修改代碼,代碼經(jīng)IDE自動編譯后產(chǎn)生變更,再由jetty-maven-plugin偵測到后更新至Jetty容器,這時你就可以直接測試Web頁面了。需要注意的是,jetty-maven-plugin并不是宿主于Apache或Codehaus的官方插件,因此使用的時候需要額外 的配置settings.xml的pluginGroups元素,將org.mortbay.jetty這個pluginGroup加入。

1.13versions-maven-plugin

http://mojo.codehaus.org/versions-maven-plugin/

很多Maven用戶遇到過這樣一個問題,當(dāng)項目包含大量模塊的時候,為他們集體更新版本就變成一件煩人的事情,到底有沒有自動化工具能幫助完成這件事情呢?(當(dāng)然你可以使用sed之類的文本操作工具,不過不在本文討論范圍)答案是肯定的,versions-maven- plugin提供了很多目標(biāo)幫助你管理Maven項目的各種版本信息。例如最常用的,命令 mvn versions:set -DnewVersion=1.1-SNAPSHOT 就能幫助你把所有模塊的版本更新到1.1-SNAPSHOT。該插件還提供了其他一些很有用的目標(biāo),display-dependency-updates能告訴你項目依賴有哪些可用的更新;類似的display-plugin-updates能告訴你可用的插件更新;然后use- latest-versions能自動幫你將所有依賴升級到最新版本。最后,如果你對所做的更改滿意,則可以使用 mvn versions:commit 提交,不滿意的話也可以使用 mvnversions:revert 進(jìn)行撤銷。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1263

    瀏覽量

    69460
  • 瀏覽器
    +關(guān)注

    關(guān)注

    1

    文章

    1025

    瀏覽量

    35353
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2945

    瀏覽量

    66747

原文標(biāo)題:常用 Maven 插件介紹

文章出處:【微信號:qrsworld,微信公眾號:嵌入式單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    求大神分享CH32F103的詳細(xì)資料

    CH32F103的詳細(xì)資料嗎?網(wǎng)站只有簡單的介紹資料。我申請到樣片和評估板后,發(fā)現(xiàn)找不到芯片的詳細(xì)資料。評估板也和網(wǎng)站上的圖紙,配置不一樣
    發(fā)表于 06-06 07:23

    元器件庫詳細(xì)資料包括了常用元件封裝的詳細(xì)資料免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是元器件庫詳細(xì)資料包括了常用元件封裝,元器件包括了:led數(shù)碼管,74LS595,單片機,電池及電源,電容,電阻,二極管,模擬集成電路,聲亮元件等
    發(fā)表于 08-13 08:00 ?0次下載

    ROS機器人軟件平臺哪些常用命令?ROS的常見命令詳細(xì)資料免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是ROS哪些常用命令?ROS的常見命令詳細(xì)資料免費下載。
    發(fā)表于 09-13 08:00 ?20次下載
    ROS機器人軟件平臺<b class='flag-5'>有</b>哪些<b class='flag-5'>常用</b>命令?ROS的常見命令<b class='flag-5'>詳細(xì)資料</b>免費下載

    uCOS-III 常用函數(shù)參考手冊詳細(xì)資料免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是uCOS-III 常用函數(shù)參考手冊詳細(xì)資料免費下載。
    發(fā)表于 11-16 08:00 ?58次下載
    uCOS-III <b class='flag-5'>常用</b>函數(shù)參考手冊<b class='flag-5'>詳細(xì)資料</b>免費下載

    DXP常用PCB庫2.0版詳細(xì)資料免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是DXP常用PCB庫2.0版詳細(xì)資料免費下載主要內(nèi)容包括了:電阻,封裝庫,元件庫。
    發(fā)表于 12-06 08:00 ?0次下載

    帶你認(rèn)識常用電子元器件的詳細(xì)資料圖解

    本文檔主要內(nèi)容詳細(xì)介紹的是帶你認(rèn)識常用電子元器件的詳細(xì)資料圖解免費下載
    發(fā)表于 02-25 08:00 ?86次下載

    西門子常用參數(shù)的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是西門子常用參數(shù)的詳細(xì)資料說明包括了:皮帶張力參數(shù),RV頭調(diào)整參數(shù),機器的調(diào)整。
    發(fā)表于 03-12 08:00 ?7次下載
    西門子<b class='flag-5'>常用</b>參數(shù)的<b class='flag-5'>詳細(xì)資料</b>說明

    PCB的常用存儲器設(shè)計的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是PCB的常用存儲器設(shè)計的詳細(xì)資料說明包括了:? SDRAM ? FLASH ? SRAM ? DDR ? DDR2 ? DDR3 ? QDR
    發(fā)表于 07-29 08:00 ?0次下載
    PCB的<b class='flag-5'>常用</b>存儲器設(shè)計的<b class='flag-5'>詳細(xì)資料</b>說明

    SQL PLUS的一些常用指令哪些詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是SQL PLUS的一些常用指令哪些詳細(xì)資料概述。
    發(fā)表于 10-30 11:18 ?4次下載

    Protel DXP的常用快捷鍵詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是Protel DXP的常用快捷鍵詳細(xì)資料說明。
    發(fā)表于 11-13 16:46 ?0次下載
    Protel DXP的<b class='flag-5'>常用</b>快捷鍵<b class='flag-5'>詳細(xì)資料</b>說明

    ASPNET的常用控件哪些詳細(xì)資料介紹

    本文檔的主要內(nèi)容詳細(xì)介紹的是ASPNET的常用控件哪些詳細(xì)資料介紹
    發(fā)表于 11-14 15:31 ?8次下載
    ASPNET的<b class='flag-5'>常用</b>控件<b class='flag-5'>有</b>哪些<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>介紹</b>

    PROTEL常用元件封裝的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是PROTEL常用元件封裝的詳細(xì)資料說明。
    發(fā)表于 11-26 15:07 ?0次下載
    PROTEL<b class='flag-5'>常用</b>元件封裝的<b class='flag-5'>詳細(xì)資料</b>說明

    常用低壓電器哪些詳細(xì)資料介紹

    本文檔的主要內(nèi)容詳細(xì)介紹的是常用低壓電器哪些詳細(xì)資料介紹包括了:第一節(jié) 低壓電器的基本知識,第
    發(fā)表于 03-04 08:00 ?1次下載
    <b class='flag-5'>常用</b>低壓電器<b class='flag-5'>有</b>哪些<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>介紹</b>

    常用電器的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是常用電器的詳細(xì)資料說明包括了:照明燈具,變壓器,交流電動機,常用低壓電器
    發(fā)表于 10-20 17:57 ?26次下載
    <b class='flag-5'>常用</b>電器的<b class='flag-5'>詳細(xì)資料</b>說明

    常用電器的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是常用電器的詳細(xì)資料說明包括了:照明燈具,變壓器,交流電動機,常用低壓電器
    發(fā)表于 10-20 17:57 ?6次下載
    <b class='flag-5'>常用</b>電器的<b class='flag-5'>詳細(xì)資料</b>說明