maven生命周期和插件

maven生命周期和插件

生命周期

maven的生命周期有三套,互相獨立。每個生命周期含有不同階段,常用如下

  • clean 清理項目
    • pre-clean 執行清理前需要完成的工作
    • clean 清理上一次構建生成的文件
    • post-clean 執行清理后需要完成的工作
  • default 構建項目
    • validate 驗證項目正確,所有必需的信息都有
    • initialize 初始化編譯狀態,例如創建target文件夾
    • generate-source
    • process-source 主資源文件變量替換,復制至主classpath目錄
    • generate-resources
    • process-resources
    • compile 編譯主源碼至主classpath目錄
    • process-classes
    • generator-test-sources
    • process-test-sources 測試資源文件變量替換,復制至測試classpath目錄
    • generate-test-resources
    • process-test-resources
    • test-compile 編譯測試源碼至測試classpath目錄
    • process-test-classes
    • test 執行測試case,測試代碼不會被打包
    • prepare-package
    • package 將編譯好的代碼打包成可發布的格式
    • pre-integration-test
    • integration-test
    • post-integration-test
    • verify 核實包是有效合規,達到質量標準
    • install 將包安裝到maven本地倉庫
    • deploy 將包復制到遠程倉庫
  • site 構件站點
    • pre-site
    • site 生成項目站點文檔
    • post-site
    • site-deploy 將生成的項目站點發布到服務器上

maven命令可以調用maven的生命周期階段完成構建,不同生命周期無依賴,同一生命周期的階段前后是有依賴的。

example:mvn clean install site

插件

插件目標是插件對應的某一種功能,可以和maven生命周期的階段綁定。

默認綁定

生命周期階段插件目標
process-resourcesmaven-resource-plugin:resources
compilemaven-compiler-plugin:compile
process-test-resourcemaven-resource-plugin:testResources
test-compilemaven-compile-plugin:testCompile
testmaven-surefire-plugin:test
packagemaven-jar-plugin:jar
installmaven-install-plugin:install
deploymaven-deploy-plugin:deploy

自定義綁定

        <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.4</version><executions><execution><id>attach source</id><phase>verify</phase><goals><goal>jar-no-fork</goal></goals></execution></executions></plugin>

上面的代碼創建了一個自定義的綁定,在verify階段綁定了maven-source-plugin:jar-no-fork插件目標。作用是在verify階段生成項目源碼包,調用命令為maven verify

插件配置

  • 命令行配置
    使用-D參數配置,例如

    mvn package -Dmaven.test.skip=true
  • pom文件配置
    使用<plugin>標簽內的<configration>配置,例如

        <plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin>

    上面的代碼配置了compile插件編譯1.8版本的源文件

描述插件

  • 官方插件文檔
  • Mojo插件文檔
  • mvn help:describe -Dplugin=groupid:artifactid:version

插件解析機制

maven命令也可以調用maven的插件目標來完成構建。
分析命令

mvn dependency:tree

插件的定位也需要三要素:groupid,artifactid,version。在上述命令中dependency稱為插件前綴,tree稱為插件目標。根據插件前綴定位插件坐標。

  1. 獲取插件meta.xml信息。插件倉庫的默認地址是http://repo1.maven.org/maven2/org/apache/maven/plugins。獲取該目錄下的maven-metadata.xml。
  2. 查找前綴對應的artifactid為maven-dependency-plugin,因為查得到所以確認groupid為org.apache.maven.plugins,如果查不到則會去配置的其它倉庫重復步驟1,所有配置的倉庫均找不到則報錯。

    <plugin><name>Apache Maven Dependency Plugin</name><prefix>dependency</prefix><artifactId>maven-dependency-plugin</artifactId>
    </plugin>
  3. 確定好插件的groupid和artifactid,根據這兩個信息查找插件的metadata.xml,地址為http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/maven-metadata.xml,版本信息即可確定,maven 3默認使用release版本,所以version為2.10
  4. 所以實際執行的命令為

    mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:tree

轉載于:https://www.cnblogs.com/Rambo635755402/p/5728950.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372562.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372562.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372562.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java EE 6測試第二部分– Arquillian和ShrinkWrap簡介

在Java EE 6測試的第一部分中&#xff0c;我簡要介紹了使用Glassfish嵌入式容器的EJB 3.1 Embeddable API&#xff0c;以演示如何啟動該容器&#xff0c;如何在項目類路徑中查找bean以及運行非常簡單的集成測試。 這篇文章重點介紹Arquillian和ShrinkWrap以及為什么它們是用于企…

linux內存分配堆棧數據段代碼段,linux – LD_PRELOAD堆棧和數據段內存分配

你好,我正在編寫一個Linux模塊(基于名為“Ccontrol”的GitHub項目)來創建緩存分區(a.k.a頁面著色),以減輕定時側通道攻擊(用于防止Prime Probe等攻擊).我已經使用LD_PRELOAD系統env變量來覆蓋所有malloc(),calloc()和free()調用,并用顏色感知調用替換它們.現在我正在尋找顏色堆…

【騰訊Bugly干貨分享】Android內存優化總結實踐

本文來自于騰訊Bugly公眾號&#xff08;weixinBugly&#xff09;&#xff0c;未經作者同意&#xff0c;請勿轉載&#xff0c;原文地址&#xff1a;https://mp.weixin.qq.com/s/2MsEAR9pQfMr1Sfs7cPdWQ 導語 智能手機發展到今天已經有十幾個年頭&#xff0c;手機的軟硬件都已經發…

以編程方式向OpenJPA注冊實體類型

我剛剛開始為Isis開發 OpenJPA對象庫 。 在一般情況下&#xff0c;可以在persistence.xml文件中注冊實體類型。 但是&#xff0c;Isis是一個框架&#xff0c;可以構建自己的元模型&#xff0c;并且可以自行確定哪些類構成實體。 因此&#xff0c;我不想強??迫開發人員重復自己…

linux redis客戶端,Redisson 3.4.0和2.9.0發布,Redis客戶端

Redisson 3.4.0和2.9.0發布&#xff0c;Redis客戶端發布時間:2017-04-27 09:12:16來源:紅聯作者:baihuoRedisson于2017年4月26日發布了3.4.0和2.9.0版本Redisson是架設在Redis基礎上的一個Java駐內存數據網格(In-Memory Data Grid)。充分的利用了Redis鍵值數據庫提供的一系列優…

LeetCode 349 Intersection of Two Arrays

Given two arrays, write a function to compute their intersection. Example: Given nums1 [1, 2, 2, 1], nums2 [2, 2], return [2]. 思路&#xff1a; 利用ArrayList的contains(Object o)方法進行交集的查詢。 解法&#xff1a; 1 import java.util.ArrayList;2 3 publi…

shell腳本1——變量 $、read、``

與Shell變量相關的幾個命令&#xff1a; 變量只在當前Shell中生效. source 這個命令讓腳本影響他們父Shell的環境&#xff08;. 可以代替source命令&#xff09; export 這個命令可以讓腳本影響其子Shell的環境 () unset 從環境中刪除變量 其他幾個與變量有關的命令&#xff1…

令人印象深刻的第一個Apache Camel版本

為了準備下周的CamelOne會議&#xff0c;我花了一些時間回顧一下Apache Camel項目的歷史。 因此&#xff0c;除其他外&#xff0c;我了解了Apache Camel的第一個正式1.0版本 。 Apache Camel 1.0 – 5年前 我看的越多&#xff0c;這個版本的事實給我留下了深刻的印象。 現在您…

Linux禁用user01賬戶,Linux?管理用戶?useradd

創建用戶、設置密碼、修改用戶、刪除用戶&#xff1a;useradd testuser 創建用戶testuseruseradd [選項]useradd 命令選項-u uid:指定新用戶的uid,默認用當前最大uid加1-g group:指定新用戶所在的組(私有組),該組必須存在-G group:指定新用戶的附加組-d dir:指定新用戶的自家目…

css小細節

1. 文字居中顯示 水平居中&#xff1a; text-align: center; 垂直居中&#xff1a; line-height: (height); 2.子元素相對于父元素的絕對布局。 父元素一定要 position: relative/absolute/fixed; 默認position 是static 轉載于:https://www.cnblogs.com/zcancandice/p/5…

為什么在2012/2013年我將在新的Enterprise Java項目中繼續使用Spring *和* Java EE

自從我擔任技術決策職務以來已經過去了一年多&#xff0c;很高興看到我仍然與之保持著完美的和諧。 幾個月前&#xff0c;我在KaiWhner的一個不錯的博客中寫了一個有關JEE與Spring的答案。 如果觀點沒有不同&#xff0c;那么討論的附加值在哪里&#xff1f; 我確實同意Kai的許多…

linux ubuntu 五筆輸入法,ubuntu下安裝fcitx五筆輸入法

安裝fcitx輸入法sudo add-apt-repository ppa:fcitx-team/stable #添加安裝源&#xff0c;apt-get 添加&#xff0c;nightly源也可以sudo apt-get update #更新源&#xff0c;否則無法安裝fcit…

淺談Windows下SVN在Android Studio中的配置、基本使用及解除關聯

看到網上很多關于svn環境配置和關聯Android-Studio的很多博文&#xff0c;發現很零散&#xff0c;想集大家所長整理一下&#xff1a; 在AndroidStudio中開發版本控制中&#xff0c;除了Git就是SVN&#xff0c;和Eclipse不同Android Studio沒有提供單獨的插件&#xff0c;只能和…

四. 基于環視Camera的BEV感知算法-BEVDepth

目錄 前言0. 簡述1. 算法動機&開創性思路2. 主體結構3. 損失函數4. 性能對比總結下載鏈接參考 前言 自動駕駛之心推出的《國內首個BVE感知全棧系列學習教程》&#xff0c;鏈接。記錄下個人學習筆記&#xff0c;僅供自己參考 本次課程我們來學習下課程第四章——基于環視Cam…

【騰訊Bugly干貨分享】Android Patch 方案與持續交付

本文來自于騰訊bugly開發者社區&#xff0c;非經作者同意&#xff0c;請勿轉載&#xff0c;原文地址&#xff1a;http://dev.qq.com/topic/57a31921ac3a1fb613dd40f3 Android 不僅系統版本眾多&#xff0c;機型眾多&#xff0c;而且各個市場都各有各的政策和審核速度&#xff0…

App Engine中的Google Services身份驗證,第1部分

這篇文章將說明如何構建一個簡單的Google App Engine&#xff08;GAE&#xff09;Java應用程序&#xff0c;該應用程序可針對Google進行身份驗證&#xff0c;并利用Google的OAuth授權訪問Google的API服務&#xff08;例如Google Docs&#xff09;。 此外&#xff0c;在Google已…

c語言中空格的作用是什么,C語言中空格和\0的區別

\0 為字符串結束符&#xff0c;比如說&#xff1a;abcd (空格)cdefg&#xff1b;存入數組時&#xff0c;空格作為一個字符占有一個字節的空間&#xff0c;我們可以把它看著一個字符去處理。而“\0 ” 則是這個字符串的結束標識符&#xff0c;也占有一個字節的空間&#xff0c;表…

C++11 新特性:Lambda 表達式

參考文章&#xff1a;https://blogs.oracle.com/pcarlini/entry/c_1x_tidbits_lambda_expressions 或許&#xff0c;Lambda 表達式算得上是 C 11 新增特性中最激動人心的一個。這個全新的特性聽起來很深奧&#xff0c;但卻是很多其他語言早已提供&#xff08;比如 C#&#xff0…

山東自考c語言程序設計停考了嗎,2018山東自考停考專業有哪些

自考每年都會停考一批的專業以適應社會的發展&#xff0c;今年山東自考的停考專業有哪些&#xff1f;本文由學梯網小編整理發布&#xff0c;僅供參考。2018年山東自考停考專業有什么根據山東省教育考試院發布的《關于山東自學考試停考國際貿易(專科)等19個專業的通知》知悉&…

公開調用私有Java方法?

我們是Java開發人員&#xff0c;在Java中已知4種訪問修飾符&#xff1a;私有&#xff0c;受保護&#xff0c;公共和包。 好吧&#xff0c;除了私有外&#xff0c;最后三個可以通過繼承&#xff0c;相同的包或實例從類外部調用。 現在&#xff0c;常見的問題是&#xff0c;可以公…