最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot打包JAR包瘦身lib和配置文件分離方式

 更新時間:2024年11月21日 14:50:57   作者:H90P0820  
本文介紹了如何通過優(yōu)化POM.xml配置來減小JAR包大小,提高傳輸速度,主要步驟包括:指定打包環(huán)境和跳過編譯單元測試、JAR打包排除配置文件和lib、提供全量包便于開發(fā)環(huán)境使用、將lib和配置文件單獨復(fù)制出來

springboot打包JAR包瘦身lib和配置文件分離

最近項目在部署使用的過程中,傳輸JAR包的時候發(fā)現(xiàn)JAR包有點大,傳輸速度有點慢。

筆者基于這個前提對項目的打包配置進(jìn)行優(yōu)化進(jìn)行探索,一般來說lib是很少修改,配置文件會根據(jù)需求會有所變動,如果講配置文件打進(jìn)JAR生產(chǎn)環(huán)境會修改等不便等操作。

以下配置再pom.xml中 <build> <plugins>添加相關(guān)配置</plugins></build>

1.指定打包環(huán)境和跳過編譯單元測試

<!--定義項目的編譯環(huán)境-->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<!--默認(rèn)執(zhí)行src/test/java路徑下的測試用例,建議跳過執(zhí)行-->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>

2.JAR打包排除配置文件和lib

<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>3.2.0</version>
				<configuration>
					<!-- 不打包資源文件,如果放開全量JAR也不會打進(jìn)去-->
<!--					<excludes>-->
<!--						<exclude>*.yml</exclude>-->
<!--						<exclude>*.properties</exclude>-->
<!--					</excludes>-->
					<archive>
						<manifest>
							<addClasspath>true</addClasspath>
							<!-- MANIFEST.MF 中 Class-Path 加入前綴 -->
							<classpathPrefix>lib/</classpathPrefix>
							<!-- jar包不包含唯一版本標(biāo)識 -->
							<useUniqueVersions>false</useUniqueVersions>
							<!--指定啟動入口類 -->
							<mainClass>com.xxxx.Application</mainClass>
						</manifest>
						<manifestEntries>
							<!--MANIFEST.MF 中 Class-Path 加入資源文件目錄 -->
							<Class-Path>./resources/</Class-Path>
						</manifestEntries>
					</archive>
					<outputDirectory>${project.build.directory}</outputDirectory>
				</configuration>
			</plugin>

3.如果需要全量包也可以增加如下配置

便于開發(fā)環(huán)境打包使用

			<!--全量JAR包,最初的打包方式,springboot的默認(rèn)編譯插件,默認(rèn)會把所有的文件打包成一個jar,-->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
                    <!--設(shè)置springboot的啟動類或者是JAR包的啟動類-->
					<mainClass>com.xxxx.Application</mainClass>
					<fork>true</fork>
					<addResources>true</addResources>
					<outputDirectory>${project.build.directory}/jar</outputDirectory>
				</configuration>
			</plugin>

4.將lib和配置文件單獨復(fù)制出來

<!--復(fù)制關(guān)聯(lián)JAR包到指定lib打包目錄 ,target目錄下的文件夾下,按需修改 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>
					<execution>
						<id>copy-dependencies</id>
						<phase>package</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<outputDirectory>${project.build.directory}/lib/</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<!-- 復(fù)制配置文件到指定resources打包目錄 ,target目錄下的文件夾下,按需修改-->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>3.2.0</version>
				<executions>
					<execution> <!-- 復(fù)制配置文件 -->
						<id>copy-resources</id>
						<phase>package</phase>
						<goals>
							<goal>copy-resources</goal>
						</goals>
						<configuration>
							<resources>
								<resource>
									<directory>src/main/resources</directory>
									<includes>
										<include>*.yml</include>
										<include>*.properties</include>
									</includes>
								</resource>
							</resources>
							<outputDirectory>${project.build.directory}/resources</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>

5.全量配置如下,拷貝即用

注意啟動類的指定:

以下配置再pom.xml中 <build> 添加相關(guān)配置</build>

	<!--拆分配置文件和LIB,給JAR瘦身-->
		<!--啟動參考命令,再JAR目錄執(zhí)行,也可以指定絕對路徑:
${project.build.directory}工程路徑下的target目錄
		Dloader.path:加載本地lib
		Dspring.config.location:加載本地配置
		server.port:指定端口
		/-/- 這個有轉(zhuǎn)義,注命令要去掉/
		java -Dloader.path=lib/ -jar xxxx.jar /-/-Dspring.config.location=resources/ /-/-server.port=8080
		-->
		<plugins>
			<!--定義項目的編譯環(huán)境-->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<!--默認(rèn)執(zhí)行src/test/java路徑下的測試用例,建議跳過執(zhí)行-->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>
			<!--全量JAR包,最初的打包方式,springboot的默認(rèn)編譯插件,默認(rèn)會把所有的文件打包成一個jar-->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<mainClass>com.xxxx</mainClass>
					<fork>true</fork>
					<addResources>true</addResources>
					<outputDirectory>${project.build.directory}/jar</outputDirectory>
				</configuration>
			</plugin>
			<!-- 打JAR包 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>3.2.0</version>
				<configuration>
					<!-- 不打包資源文件,如果放開全量JAR也不會打進(jìn)去-->
<!--					<excludes>-->
<!--						<exclude>*.yml</exclude>-->
<!--						<exclude>*.properties</exclude>-->
<!--					</excludes>-->
					<archive>
						<manifest>
							<addClasspath>true</addClasspath>
							<!-- MANIFEST.MF 中 Class-Path 加入前綴 -->
							<classpathPrefix>lib/</classpathPrefix>
							<!-- jar包不包含唯一版本標(biāo)識 -->
							<useUniqueVersions>false</useUniqueVersions>
							<!--指定springboot啟動入口類 -->
							<mainClass>com.xxxx</mainClass>
						</manifest>
						<manifestEntries>
							<!--MANIFEST.MF 中 Class-Path 加入資源文件目錄 -->
							<Class-Path>./resources/</Class-Path>
						</manifestEntries>
					</archive>
					<outputDirectory>${project.build.directory}</outputDirectory>
				</configuration>
			</plugin>
			<!--復(fù)制關(guān)聯(lián)JAR包到指定lib打包目錄 ,target目錄下的文件夾下,按需修改 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>
					<execution>
						<id>copy-dependencies</id>
						<phase>package</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<outputDirectory>${project.build.directory}/lib/</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<!-- 復(fù)制配置文件到指定resources打包目錄 ,target目錄下的文件夾下,按需修改-->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>3.2.0</version>
				<executions>
					<execution> <!-- 復(fù)制配置文件 -->
						<id>copy-resources</id>
						<phase>package</phase>
						<goals>
							<goal>copy-resources</goal>
						</goals>
						<configuration>
							<resources>
								<resource>
									<directory>src/main/resources</directory>
									<includes>
										<include>*.yml</include>
										<include>*.properties</include>
									</includes>
								</resource>
							</resources>
							<outputDirectory>${project.build.directory}/resources</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java在Word中添加多行圖片水印

    Java在Word中添加多行圖片水印

    這篇文章主要介紹了Java在Word中添加多行圖片,圖文講解的很清晰,有對于這方面不懂得同學(xué)可以跟著研究下
    2021-02-02
  • IDEA如何切換數(shù)據(jù)庫版本mysql5或mysql8

    IDEA如何切換數(shù)據(jù)庫版本mysql5或mysql8

    本文介紹了如何將IntelliJ IDEA從MySQL5切換到MySQL8的詳細(xì)步驟,包括下載MySQL8、安裝、配置、停止舊服務(wù)、啟動新服務(wù)以及更改密碼等
    2025-01-01
  • 全面解析Java8觀察者模式

    全面解析Java8觀察者模式

    這篇文章主要為大家全面解析Java8觀察者模式,通過在 Java8 環(huán)境下實現(xiàn)觀察者模式的實例,進(jìn)一步介紹了什么是觀察者模式、專業(yè)化及其命名規(guī)則,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 解決springCache配置中踩的坑

    解決springCache配置中踩的坑

    這篇文章主要介紹了解決springCache配置中踩的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java全版本特性與用法示例(含總覽?+?分版本要點)

    Java全版本特性與用法示例(含總覽?+?分版本要點)

    Java自JDK8開啟現(xiàn)代化演進(jìn)以來,始終遵循半年特性版本+兩年LTS(長期支持)版本的發(fā)布節(jié)奏,持續(xù)在語言表達(dá)力、并發(fā)性能、開發(fā)體驗、安全能力四大維度突破,這篇文章主要介紹了Java全版本特性與用法(含總覽+分版本要點)的相關(guān)資料,需要的朋友可以參考下
    2026-05-05
  • SpringBoot整合RocketMQ批量發(fā)送消息的實現(xiàn)代碼

    SpringBoot整合RocketMQ批量發(fā)送消息的實現(xiàn)代碼

    這篇文章主要介紹了SpringBoot整合RocketMQ批量發(fā)送消息的實現(xiàn),文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • java Collection 之List學(xué)習(xí)介紹

    java Collection 之List學(xué)習(xí)介紹

    本篇文章小編為大家介紹,java Collection 之List學(xué)習(xí)介紹。需要的朋友參考下
    2013-04-04
  • Spring無法接收List<event>的解決方案

    Spring無法接收List<event>的解決方案

    在日常開發(fā)中,我們常使用 Spring 的 @EventListener 注解來監(jiān)聽事件,但在處理 批量事件 時,卻可能遇到一些“看似合理但無法生效”的監(jiān)聽方式,本文以實際具體案例為出發(fā)點,結(jié)合源碼分析事件派發(fā)邏輯,并給出兩種可行解決方案,需要的朋友可以參考下
    2025-04-04
  • java 輸入3個數(shù)a,b,c,按大小順序輸出的實例講解

    java 輸入3個數(shù)a,b,c,按大小順序輸出的實例講解

    今天小編就為大家分享一篇java 輸入3個數(shù)a,b,c,按大小順序輸出的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Java實現(xiàn)json數(shù)據(jù)處理的常用腳本分享

    Java實現(xiàn)json數(shù)據(jù)處理的常用腳本分享

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)json數(shù)據(jù)處理的常用腳本,文中的示例代碼講解詳細(xì),具有一定的參考價值,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-03-03

最新評論

永泰县| 屏南县| 山西省| 武冈市| 大埔区| 布尔津县| 汨罗市| 建昌县| 濮阳县| 化州市| 治多县| 尤溪县| 宜都市| 长垣县| 龙口市| 宁安市| 凤山市| 中西区| 永寿县| 中宁县| 都兰县| 平原县| 绥棱县| 报价| 三穗县| 贺兰县| 广元市| 龙泉市| 舟曲县| 天台县| 和静县| 招远市| 保亭| 五指山市| 武鸣县| 炉霍县| 怀化市| 天气| 闵行区| 九寨沟县| 宿州市|