Maven 插件使用

1.spring-boot-maven-plugin

我們直接使用 maven package (maven自帶的package打包功能),打包Jar包的時候,不會將該項目所依賴的Jar包一起打進去,在使用java -jar命令啟動項目時會報錯,項目無法正常啟動。這個時候,我們就可以考慮引用spring-boot-maven-plugin插件來為項目打Jar包。

<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring.boot.version}</version><executions><execution><goals><!-- 將引入的 jar 打入其中 --><goal>repackage</goal></goals></execution></executions>
</plugin>
2.flatten-maven-plugin

在使用Maven多模塊結構工程時,版本管理是一件很繁瑣且容易出錯的事情。每次升級版本號都要手動調整或者通過mvn versions:set -DnewVerion=1.2.0-SNAPSHOT命令去更改每一個子模塊的版本號,非常的不方便,Maven官方文檔說:自 Maven 3.5.0-beta-1 開始,可以使用 ${revision}, ${sha1} and/or ${changelist} 這樣的變量作為版本占位符。即在maven多模塊項目中,可配合插件flatten-maven-plugin${revision}屬性來實現全局版本統一管理。

<!-- 統一 revision 版本 -->
<plugin><groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>1.5.0</version><configuration><!-- 避免IDE將 .flattened-pom.xml 自動識別為功能模塊 --><flattenMode>resolveCiFriendliesOnly</flattenMode><updatePomFile>true</updatePomFile></configuration><executions><execution><goals><goal>flatten</goal></goals><id>flatten</id><phase>process-resources</phase></execution><execution><goals><goal>clean</goal></goals><id>flatten.clean</id><phase>clean</phase></execution></executions>
</plugin>

不可混合使用${revision}和明確字符串版本號,若出現父子模塊版本號混合使用${revision}和明確字符串形式如1.2.0-SNAPSHOT,在mvn package會出現類似如下錯誤

在這里插入圖片描述

3.maven-clean-plugin

maven-clean-plugin 插件對應的命令是 mvn clean,執行 mvn clean 命令會刪除構建輸出目錄 target。mvn clean 命令其實是調用 maven-clean-plugin 插件執行 clean 操作的。maven-clean-plugin 插件是默認安裝好的插件,并不需要我們在 pom.xml 文件中進行配。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-clean-plugin</artifactId><version>3.2.0</version><configuration><!-- 忽略錯誤 --><failOnError>false</failOnError></configuration><!-- mvn package和mvn clean package等價配置 --><executions><execution><id>auto-clean</id><phase>initialize</phase><goals><goal>clean</goal></goals></execution></executions>
</plugin>
4.maven-compiler-plugin

maven-compiler-plugin 插件是一個 Maven 插件,用來編譯項目代碼;自從3.0開始默認的編譯器是 javax.tools.JavaCompiler,用來編譯 Java 源碼;如果你想強制插件使用 javac 編譯器,你必須配置插件的屬性 forceJavacCompilerUse;還要注意,當前默認源(source)設置為 1.6,默認目標(target)設置為 1.6。獨立運行 Maven 和 JDK,可以通過 source 和 target 選項更改他們的默認值;

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><!-- 源代碼使用的JDK版本 --><source>1.8</source> <!-- 需要生成的目標class文件的編譯版本 --><target>1.8</target> <!-- 字符集編碼 --><encoding>UTF-8</encoding><!-- 跳過測試 --><skipTests>true</skipTests><!-- maven-compiler-plugin 插件,解決 Lombok + MapStruct 組合 --><annotationProcessorPaths><path><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>2.7.18</version></path><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version></path><path><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.5.5.Final</version></path></annotationProcessorPaths></configuration>
</plugin>
5.maven-resources-plugin

maven-resources-plugin插件來將src/main/resources目錄中的資源文件單獨剝離出來,生成一個獨立的資源文件包,用于處理項目資源文件并拷貝到輸出目錄。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.2.0</version><executions><execution><id>copy-resources</id><phase>package</phase><goals><goal>copy-resources</goal></goals><configuration><outputDirectory>${project.build.directory}/resources</outputDirectory><resources><resource><directory>src/main/resources</directory><includes><include>**/*</include></includes></resource></resources></configuration></execution></executions></plugin>

上述配置將在Maven的package階段執行copy-resources目標,并將src/main/resources目錄中的所有文件復制到${project.build.directory}/resources目錄下。執行mvn package命令后,將生成一個獨立的資源文件包,其中包含src/main/resources目錄中的所有文件。可以在${project.build.directory}/resources目錄中找到這個資源文件包。

6.maven-source-plugin

maven-source-plugin提供項目自動將源碼打包并發布的功能,在需要發布源碼項目的pom.xml文件中添加如下代碼即可執行 mvn install,maven會自動將source install到repository 。執行 mvn deploy,maven會自動將source deploy到remote-repository 。執行 mvn source:jar,單獨打包源碼。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>3.3.0</version><executions><execution><id>attach-sources</id><goals><goal>jar</goal></goals></execution></executions>
</plugin>
7.maven-war-plugin

maven-war-pluginWAR 插件負責收集 Web 應用程序的所有依賴項、類和資源,并將它們打包到 WAR 包中,僅包含 scopecompile+runtime 的依賴項,默認綁定到 package 階段。

<plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.4.0</version></plugin>
</plugins>
<resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/**</include></includes><filtering>true</filtering></resource>
</resources>
8.maven-antrun-plugin

maven-antrun-plugin 是 Maven 的一個插件,它允許你在 Maven 構建生命周期的某個階段執行 Apache Ant 任務。Apache Ant 是一個基于 Java 的構建工具,常用于 Java 項目的構建和部署。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>3.1.0</version>
</plugin>
9.maven-surefire-plugin

Maven本身并不是一個單元測試框架,它只是在構建執行到特定生命周期階段的時候,通過插件來執行JUnit或者TestNG的測試用例。這個插件就是maven-surefire-plugin,也可以稱為測試運行器(Test Runner),它能兼容JUnit]3、JUnit 4以及TestNG。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M5</version>
</plugin>
10.versions-maven-plugin

versions-maven-plugin插件可以管理項目版本, 特別是當Maven工程項目中有大量子模塊時,可以批量修改pom版本號,插件會把父模塊更新到指定版本號,然后更新子模塊版本號與父模塊相同,可以避免手工大量修改和遺漏的問題。

<!-- generateBackupPoms為true(默認值),pom.xml.versionsBackup備份文件,否則沒有備份文件無法回退版本號 -->
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>versions-maven-plugin</artifactId> <version>2.7</version><configuration><generateBackupPoms>true</generateBackupPoms></configuration>
</plugin>

#查看版本號
mvn help:evaluate -Dexpression=project.version -q -DforceStdout
# 修改版本號
mvn -f "pom.xml" versions:set -DoldVersion=* -DnewVersion=1.2.0-SNAPSHOT -DprocessAllModules=true -DallowSnapshots=true -DgenerateBackupPoms=true
# 修改版本號
mvn versions:set -DnewVersion=1.2.0-SNAPSHOT
# 回退版本號
mvn versions:revert
11.pluginManagement

plugins 和 pluginManagement 的區別,和我們前面研究過的 dependencies 和 dependencyManagement 的區別是非常類似的。plugins 下的 plugin 是真實使用的,而 pluginManagement 下的 plugins 下的 plugin 則僅僅是一種聲明,子項目中可以對 pluginManagement 下的 plugin 進行信息的選擇、繼承、覆蓋等。

<build><pluginManagement><plugins><!-- maven-surefire-plugin 插件,用于運行單元測試。 --><!-- 注意,需要使用 3.0.X+,因為要支持 Junit 5 版本 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M5</version></plugin><!-- maven-compiler-plugin 插件,解決 Lombok + MapStruct 組合 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><annotationProcessorPaths><path><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>2.7.18</version></path><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version></path><path><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.5.5.Final</version></path></annotationProcessorPaths></configuration></plugin></plugins></pluginManagement>
</build>

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

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

相關文章

開源相機管理庫Aravis例程學習(七)——chunk-parser

開源相機管理庫Aravis例程學習&#xff08;七&#xff09;——chunk-parser 簡介例程代碼函數說明arv_camera_create_chunk_parserarv_camera_set_chunksarv_chunk_parser_get_integer_value 簡介 本文針對官方例程中的&#xff1a;05-chunk-parser做簡單的講解。并介紹其中調…

kali linux更新卡在libc6:amd64 (2.37-15)

適配于linux的windows子系統&#xff0c;wsl2&#xff0c;安裝kali linux&#xff0c;運行 sudo apt update 卡在&#xff1a;Setting up libc6:amd64 (2.37-15) … 關機重啟、重新修復執行也不行 解決辦法&#xff1a;kill當前apt進程或者關機重啟kali-linux&#xff0c;然…

【系統架構師】-選擇題(十二)計算機網絡

1、網閘的作用&#xff1a;實現內網與互聯網通信&#xff0c;但內網與互聯網不是直連的 2、管理距離是指一種路由協議的路由可信度。15表示該路由信息比較可靠 管理距離越小&#xff0c;它的優先級就越高&#xff0c;也就是可信度越高。 0是最可信賴的&#xff0c;而255則意味…

MySQL變量的定義與使用(一)

一、標識符的命名規范 1、不能以數字開頭 2、不能使用關鍵字 3、只能使用_和$符號&#xff0c;不允許使用其他符號 二、定義MySQL變量的方法 set userName"鵝卵石"; #讀取變量 select userName as 名稱; #讀取時包含賦值操作 select userName:喜羊羊 as 賦值查詢名…

【JavaScript】內置對象 - 數組對象 ① ( 數組簡介 | 數組創建 | 數組類型檢測 )

文章目錄 一、數組對象1、數組簡介2、數組創建3、數組檢測 - Array.isArray() 方法4、數組檢測 - instanceof 運算符 Array 數組對象參考文檔 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array 一、數組對象 1、數組簡介 在 JavaScr…

(三十八)第 6 章 樹和二叉樹(二叉樹的二叉線索存儲)

1. 背景說明 2. 示例代碼 1) errorRecord.h // 記錄錯誤宏定義頭文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 從文件路徑中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strrc…

Html生成自定義函數的圖形(2024/5/10)

大概效果如下&#xff1a; 可以自定義函數和x的定義域。 我們可以使用數學表達式解析庫來解析用戶輸入的函數方程&#xff0c;并根據給定的 x 區間計算函數的值&#xff0c;然后使用圖表庫繪制圖形。 在這里&#xff0c;我將使用 math.js 庫來解析數學表達式&#xff0c;并使…

探索計算之美:HTML CSS 計算器案例

本次案例是通過HTML和CSS&#xff0c;我們可以為計算器賦予獨特的外觀和功能&#xff1b; 在這個計算器中&#xff0c;你將會發現&#xff1a; 簡潔清晰的界面設計&#xff0c;使用戶能夠輕松輸入和查看計算結果。利用HTML構建的結構&#xff0c;確保頁面具有良好的可訪問性和…

【全開源】JAVA上門家政服務系統源碼微信小程序+微信公眾號+APP+H5

功能介紹 用戶端&#xff1a;精準分類、支持家政、維修、萬能服務、一口價、報價、線上、各類家政服務、優惠專區、師傅入駐、商家入駐、我的需求、補費明細、我的投訴 師傅端&#xff1a;接單池、消息通知、接單管理、今日訂單、師傅入駐、我的錢包、實名認證 商家端&#…

HTTPS 原理和 TLS 握手機制

HTTPS的概述與重要性 在當今數字化時代&#xff0c;網絡安全問題日益凸顯&#xff0c;數據在傳輸過程中的安全性備受關注。HTTPS 作為一種重要的網絡通信協議&#xff0c;為數據的傳輸提供了強有力的安全保障。它是在 HTTP 的基礎上發展而來&#xff0c;通過引入數據加密機制&a…

流量分析(一)

數據庫類流量分析 MySQL流量 常規操作&#xff0c;查找flag ctfhub{} 注意要選擇字符集 Redis流量 查找ctfhub結果沒找到 嘗試把其變成十六進制繼續進行查找 看到了前半段flag 接著往下看 找到了后半段的flag MongoDB流量 還是一樣查找ctfhub 字符串沒找到 轉成十六進制也沒…

c 在線教育系統論文,在線教育需要在哪些渠道做付費推廣呢?

隨著在網上學習的人越來越多&#xff0c;很多在線教育公司都開發了屬于自己的平臺。如果只做開發&#xff0c;不去做運營推廣的話&#xff0c;這個在線平臺就等于是白做了。那么在線教育需要在哪些渠道做付費推廣呢? 1、官網廣告推薦位 Banner作為一款展示型頁面橫幅廣告&…

Spring狀態機的實現原理和業務場景

Spring Statemachine 是 Spring Framework 的一部分&#xff0c;它提供了一種實現狀態機的方式&#xff0c;允許開發者定義狀態機的狀態、事件、行為和轉換。狀態機是一種計算模型&#xff0c;它可以根據一系列規則從一個狀態轉移到另一個狀態。以下 V 哥將從Spring狀態機的基本…

OpenVoiceV2本地部署教程,蘋果MacOs部署流程,聲音響度統一,文字轉語音,TTS

最近OpenVoice項目更新了V2版本&#xff0c;新的模型對于中文推理更加友好&#xff0c;音色也得到了一定的提升&#xff0c;本次分享一下如何在蘋果的MacOs系統中本地部署OpenVoice的V2版本。 首先下載OpenVoiceV2的壓縮包&#xff1a; OpenVoiceV2-for-mac代碼和模型 https:…

Kitti數據集再識(官網閱讀)

KITTI數據集中真值與標定參數 0. 前言 為了再研KITTI數據集及方便下載文件,特地買了梯子,心疼人民幣QWQ~555 1. KITTI-home Welcome to the KITTI Vision Benchmark Suite! 我們利用我們的自動駕駛平臺開發新穎的具有挑戰性的真實世界計算機視覺基準。我們感興趣的任務是…

interview_bak

flink內存管理 JVM 存在的幾個問題: Java 對象存儲密度低。一個只包含 boolean 屬性的對象占用了16個字節內存:對象頭占了8個,boolean 屬性占了1個,對齊填充占了7個。而實際上只需要一個bit(1/8字節)就夠了。Full GC 會極大地影響性能,尤其是為了處理更大數據而開了很大…

安裝openssh-server,提供遠程ssh

安裝openssh-server&#xff0c;提供遠程ssh 1.檢查自己是否安裝了openssh-server dpkg -l | grep ssh如果輸出內容有openssh-server&#xff0c;說明已經安裝過了&#xff0c;可以跳過下一步 2.安裝openssh-server 由于ubuntu自帶ssh客戶端&#xff0c;只需要安裝openssh-se…

mysql -- CRUD

CRUD MySQL是一個廣泛使用的開源關系數據庫管理系統&#xff08;RDBMS&#xff09;&#xff0c;它支持通過SQL&#xff08;Structured Query Language&#xff09;語言進行數據的管理。在MySQL中&#xff0c;CRUD是一個常見的術語&#xff0c;代表了數據管理的四個基本操作&am…

圖片轉圖標(ICO)的工具軟件

目前常用的ICO轉換方式大多都是網頁在線轉換&#xff0c;沒網就無法使用了。自己編寫了一款小軟件&#xff0c;可以將各種格式圖片轉為ICO圖標。 目前支持PNG,BMP,JPG,JPEG,GIF等格式的圖片轉換成ICO&#xff0c;支持的尺寸有常用的16*16&#xff0c;24*24&#xff0c;32*32&am…

Linux 進程間通信 System V系列: 共享內存,信號量,簡單介紹消息隊列

進程間通信 System V系列: 共享內存,初識信號量 一.共享內存1.引入2.原理3.系統調用接口1.shmget2.shmat和shmdt3.shmctl 4.邊寫代碼邊了解共享內存的特性1.ftok形成key,shmget創建與獲取共享內存2.shm相關指令3.shmat和shmdt掛接和取消掛接4.shmctl獲取共享內存信息,釋放共享內…