Maven中plugins與pluginManagement的區(qū)別說(shuō)明
plugins與pluginManagement的區(qū)別
plugins 下的 plugin 是真實(shí)使用的,而 pluginManagement 下的 plugins 下的 plugin 則僅僅是一種聲明,父項(xiàng)目是不能使用的,子項(xiàng)目中可以對(duì) pluginManagement 下的 plugin 進(jìn)行信息的選擇、繼承、覆蓋等。
假如存在兩個(gè)項(xiàng)目,項(xiàng)目A為項(xiàng)目B的父項(xiàng)目,其關(guān)系通過(guò)pom文件的關(guān)系確定。項(xiàng)目A的父pom文件片段如下:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
</pluginManagement>
如果項(xiàng)目B也想使用該plugin配置,則在項(xiàng)目B的子pom文件中只需要如下配置:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
</plugin>
</plugins>
可以看到,子項(xiàng)目的pom文件中,省去了版本、配置細(xì)節(jié)等信息,只需要指定groupId和artifactId,其他信息均從父項(xiàng)目的pom文件繼承。如果子pom文件需要定制自己的插件,可以另行設(shè)置,并會(huì)覆蓋從父pom文件繼承到的內(nèi)容。
特別提示:dependencies 和 dependencyManagement 均是 project 下的直接子元素,但是 plugins 和 pluginManagement 卻是 project 下 build 的直接子元素。
plugins與pluginManagement的關(guān)系
在配置SonarQube的時(shí)候遇到了一些問(wèn)題,例如surefire跟failsafe應(yīng)該寫(xiě)在哪里
pluginManagement的作用類似于denpendencyManagement,只是denpendencyManagement是用于管理項(xiàng)目jar包依賴,pluginManagement是用于管理plugin。
與pom build里的plugins區(qū)別是,這里的plugin是列出來(lái),然后讓子pom來(lái)決定是否引用。
如果要讓子模塊繼承父模塊的plugin的使用,還是要在父模塊里頭聲明這些plugin
另外說(shuō)一下,關(guān)于packaging,pom意味著這個(gè)包本身不會(huì)被打成jar.
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用jackson實(shí)現(xiàn)對(duì)象json之間的相互轉(zhuǎn)換(spring boot)
這篇文章主要介紹了使用jackson實(shí)現(xiàn)對(duì)象json之間的相互轉(zhuǎn)換(spring boot),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Springcloud Stream消息驅(qū)動(dòng)工具使用介紹
SpringCloud Stream由一個(gè)中間件中立的核組成,應(yīng)用通過(guò)SpringCloud Stream插入的input(相當(dāng)于消費(fèi)者consumer,它是從隊(duì)列中接收消息的)和output(相當(dāng)于生產(chǎn)者producer,它是發(fā)送消息到隊(duì)列中的)通道與外界交流2022-09-09
重新認(rèn)識(shí)Java中的ThreadLocal
ThreadLocal是JDK包提供的,它提供線程本地變量,如果創(chuàng)建一個(gè)ThreadLocal變量,那么訪問(wèn)這個(gè)變量的每個(gè)線程都會(huì)有這個(gè)變量的一個(gè)副本,在實(shí)際多線程操作的時(shí)候,操作的是自己本地內(nèi)存中的變量,從而規(guī)避了線程安全問(wèn)題2021-05-05
Java多線程編程實(shí)現(xiàn)socket通信示例代碼
這篇文章主要介紹了Java多線程編程實(shí)現(xiàn)socket通信示例代碼,詳細(xì)介紹了tcp、udp協(xié)議,以及基于socket的Java網(wǎng)絡(luò)編程的相關(guān)內(nèi)容及代碼示例,代碼測(cè)試可用,供大家參考。2017-10-10
Json轉(zhuǎn)list二層解析轉(zhuǎn)換代碼實(shí)例
這篇文章主要介紹了Json轉(zhuǎn)list二層解析轉(zhuǎn)換代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12
Java自帶定時(shí)任務(wù)ScheduledThreadPoolExecutor實(shí)現(xiàn)定時(shí)器和延時(shí)加載功能
今天小編就為大家分享一篇關(guān)于Java自帶定時(shí)任務(wù)ScheduledThreadPoolExecutor實(shí)現(xiàn)定時(shí)器和延時(shí)加載功能,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
SpringCloud中使用webclient(get和post)請(qǐng)求微服務(wù)接口數(shù)據(jù)
在SpringCloud項(xiàng)目中使用WebClient調(diào)用微服務(wù)時(shí),涉及配置WebClient、發(fā)起get和post請(qǐng)求等操作,如請(qǐng)求頭設(shè)置、服務(wù)地址配置、數(shù)據(jù)轉(zhuǎn)換處理、異常處理等,避免在循環(huán)中使用WebClient請(qǐng)求、路徑設(shè)置細(xì)節(jié)以及數(shù)據(jù)返回處理技巧,本文旨在幫助理解和應(yīng)用WebClient進(jìn)行微服務(wù)調(diào)用2024-10-10

