maven三個(gè)常用的插件使用介紹
背景
maven 常用的三個(gè)插件對(duì)打包有不同的作用:
maven-jar-plugin:處理 jar 包生成;
spring-boot-maven-plugin:SpringBoot 項(xiàng)目打包;
maven-assembly-plugin:自定義打包結(jié)構(gòu)。
而實(shí)際開發(fā)過程中這三個(gè)插件可能都綜合使用,本文類介紹混合使用這些插件時(shí)需要注意的事項(xiàng)。
SpringBoot 打包時(shí)排除文件
SpringBoot 項(xiàng)目打包時(shí)一般會(huì)抽出配置文件和靜態(tài)資源文件到指定目錄,然后通過 --spring.config.additional-location=file:xxx
額外指定配置文件。
這樣的話,SpringBoot 打包時(shí)就需要排除配置文件和靜態(tài)資源文件,可以用 maven-ja-pluginr
插件來排除:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.0</version> <configuration> <excludes> <exclude>*.yml</exclude> <exclude>static/**</exclude> <exclude>lib/**</exclude> </excludes> </configuration> </plugin>
注意:如果排除文件夾,需要后面兩個(gè)星星。
Spring 打包本地依賴 jar
如果項(xiàng)目需要依賴本地某目錄下的 jar 包,而它又沒有在倉庫中發(fā)布的話,可以通過如下方式添加依賴:
<dependency> <groupId>XXXX</groupId> <artifactId>XXX</artifactId> <version>1.0.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/resources/lib/xxx.jar</systemPath> </dependency>
值得注意的是,如果項(xiàng)目用了 SpringBoot 打包插件,默認(rèn)是不會(huì)將 system 作用域的 jar 打入 lib 目錄的,需要添加 includeSystemScope
配置將第三方 jar 包加入到 lib :
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> </plugin>
編譯時(shí)排除指定文件
pom.xml 的 resources
配置可以對(duì)資源文件進(jìn)行篩選,常見配置如下:
<resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>static/**</exclude> <exclude>*.yml</exclude> </excludes> </resource> </resources>
該方式會(huì)直接影響編譯時(shí)資源文件的處理過程,即 target 目錄下的 classes 目錄中就不包括指定文件,從而導(dǎo)致本地運(yùn)行時(shí)缺少配置文件,所以開發(fā)期間不建議用這種方式。
復(fù)制粘貼的原則
想起以前看到的一段經(jīng)典話語:
我從互聯(lián)網(wǎng)上得到的最好的經(jīng)驗(yàn)之一,就是永遠(yuǎn)不要復(fù)制和粘貼不是自己編寫的代碼。如果你一定要復(fù)制,那就照著它逐字輸入,逼著自己思考,這些代碼實(shí)際上是什么意思。
除了代碼需要復(fù)制粘貼,平時(shí)文檔編寫時(shí)也免不了拿舊文檔做模板。
word 文檔編寫過程中,如果內(nèi)容是復(fù)制、粘貼的,我的經(jīng)驗(yàn)是,完成后必做幾項(xiàng)檢查:
標(biāo)題:檢查文檔中的標(biāo)題、系統(tǒng)名稱是否更正為目標(biāo)文檔的內(nèi)容。目錄更正:文檔頁碼變化后,必須重新生成目錄與之對(duì)應(yīng)。修改內(nèi)容校對(duì):修改過的內(nèi)容,需要校對(duì)至少三遍。
總結(jié)
到此這篇關(guān)于maven三個(gè)常用的插件使用介紹的文章就介紹到這了,更多相關(guān)maven插件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java基礎(chǔ)學(xué)習(xí)之實(shí)參和形參
這篇文章主要介紹了Java基礎(chǔ)學(xué)習(xí)之實(shí)參形參,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有一定的幫助,需要的朋友可以參考下2021-05-05Eureka注冊不上或注冊后IP不對(duì)(多網(wǎng)卡的坑及解決)
這篇文章主要介紹了Eureka注冊不上或注冊后IP不對(duì)(多網(wǎng)卡的坑及解決),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11Java實(shí)現(xiàn)企業(yè)微信消息推送功能的詳細(xì)步驟
這篇文章主要介紹了Java實(shí)現(xiàn)企業(yè)微信消息推送功能,本文圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04Java高并發(fā)編程之CAS實(shí)現(xiàn)無鎖隊(duì)列代碼實(shí)例
這篇文章主要介紹了Java高并發(fā)編程之CAS實(shí)現(xiàn)無鎖隊(duì)列代碼實(shí)例,在多線程操作中,我們通常會(huì)添加鎖來保證線程的安全,那么這樣勢必會(huì)影響程序的性能,那么為了解決這一問題,于是就有了在無鎖操作的情況下依然能夠保證線程的安全,需要的朋友可以參考下2023-12-12SpringBoot實(shí)現(xiàn)統(tǒng)一封裝返回前端結(jié)果集的示例代碼
在實(shí)際項(xiàng)目開發(fā)過程中,我們經(jīng)常將返回?cái)?shù)據(jù)的基本形式統(tǒng)一為JSON格式的數(shù)據(jù)。但項(xiàng)目可能是由很多人開發(fā)的,所以我們最好將返回的結(jié)果統(tǒng)一起來。本文介紹了SpringBoot實(shí)現(xiàn)統(tǒng)一封裝返回前端結(jié)果集的示例代碼,需要的可以參考一下2022-06-06實(shí)現(xiàn)一個(gè)規(guī)則引擎的可視化具體方案
項(xiàng)目原因需要用到規(guī)則引擎,但是發(fā)現(xiàn)大部分不可以自由的進(jìn)行規(guī)則定義,通過不斷嘗試變換關(guān)鍵字在搜索引擎搜索,最終在stackoverflow找到了一個(gè)探討這個(gè)問題的帖子,特此將帖子中提到的方案分享一下,如果你跟我一樣在研究同樣的問題,也許對(duì)你有用2021-04-04使用SpringBoot中web項(xiàng)目推薦目錄結(jié)構(gòu)的問題
這篇文章主要介紹了SpringBoot中web項(xiàng)目推薦目錄結(jié)構(gòu)的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01java類實(shí)現(xiàn)日期的時(shí)間差的實(shí)例講解
在本篇文章里小編給大家整理的是一篇關(guān)于java類實(shí)現(xiàn)日期的時(shí)間差的實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-01-01