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

SpringBoot?項(xiàng)目瘦身maven/gradle詳解

 更新時(shí)間:2023年01月06日 11:35:18   作者:howeres  
這篇文章主要介紹了SpringBoot項(xiàng)目瘦身(maven/gradle),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

maven thin jar 步驟

spring-boot-maven-plugin
    configuration
        layout ZIP
        includes
            include non-exists

maven-dependency-plugin
	excutions
		excution
			goal copy-dependencies
			configuration outputDirectory
<build>
	<finalName>thin-jar</finalName>
	<!--java -jar -Dloader.path=./lib thin-jar.jar-->
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<version>${spring.boot.version}</version>
			<executions>
				<execution>
					<goals>
						<goal>repackage</goal>
					</goals>
				</execution>
			</executions>
			<configuration>
				<!-- fork=true 新開 Jvm 運(yùn)行插件 -->
				<fork>true</fork>
				<addResources>true</addResources>
				<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
				<layout>ZIP</layout>
				<includes>
					<include>
						<groupId>non-exists</groupId>
						<artifactId>non-exists</artifactId>
					</include>
				</includes>
			</configuration>
		</plugin>

		<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>
						<!--是否排除傳遞性-->
						<excludeTransitive>false</excludeTransitive>
						<!--是否去掉jar包版本信息-->
						<stripVersion>false</stripVersion>
						<!--包含范圍-->
						<includeScope>runtime</includeScope>
					</configuration>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>
  • <fork>false</fork>

表示 Maven 使用自身的 JVM 虛擬機(jī)運(yùn)行插件, 而 <fork>true</fork> 則告知 Maven 啟動(dòng)一個(gè)新的 JVM 虛擬機(jī)進(jìn)程運(yùn)行插件. 使用 spring-boot-devtools 模塊時(shí)需要特定 JVM 配置來運(yùn)行, 所以需要?jiǎng)?chuàng)建新的 JVM 虛擬機(jī)進(jìn)程來運(yùn)行. 所以通常使用 spring-boot-devtools 熱部署時(shí), 需要在 spring-boot-maven-plugin 插件上會加上 fork=true

  • <layout>ZIP</layout>

MANIFEST.MF 文件中 Main-Class 是 PropertiesLauncher, 就是 spring-boot-maven-plugin 插件配置 <layout>ZIP</layout> 的結(jié)果

  • layout:
  • JAR,即通常的可執(zhí)行jar
  • Main-Class: org.springframework.boot.loader.JarLauncher
  • WAR,即通常的可執(zhí)行war,需要的servlet容器依賴位于WEB-INF/lib-provided
  • Main-Class: org.springframework.boot.loader.warLauncher
  • ZIP,即DIR,類似于JAR
  • Main-Class: org.springframework.boot.loader.PropertiesLauncher
  • MODULE,將所有的依賴庫打包(scope為provided的除外),但是不打包Spring Boot的任何Launcher
  • NONE,將所有的依賴庫打包,但是不打包Spring Boot的任何Launcher
  • 此外 <classifier>suffix</classifier> project-1.1.1-suffix 與 mvn package 所打成的 jar 進(jìn)行區(qū)分
  • mvn package 打包時(shí)使用 maven-jar-plugin 插件執(zhí)行 package 命令, 生成的 jar 不包含依賴, 不可以執(zhí)行但可以作為依賴引用
  • 使用 spring-boot-maven-plugin 插件打包將 mvn package 生成的軟件包重命名為了 *.original

Gradle thin jar

task clearJar(type: Delete) {
    delete "$buildDir/libs/lib"
}
 
// 將依賴包復(fù)制到lib目錄
task copyJar(type: Copy, dependsOn: 'clearJar') {
    into "$buildDir/libs/lib"
    from configurations.runtime

    // from configurations.compileClasspath
}
 
bootJar {
    // mainClassName = ''
    // 例外所有的jar
    excludes = ["*.jar"]
    // lib目錄的清除和復(fù)制任務(wù) 
    dependsOn clearJar
    dependsOn copyJar
 
    // 指定依賴包的路徑, 無需 java.ext.dir 或 loader.path 參數(shù)
    manifest {
        attributes "Manifest-Version": 1.0,
            'Class-Path': configurations.compileClasspath.files.collect { "lib/$it.name" }.join(' ')
    }
}

需要把 dependencies 放到了 bootJar{} 之前

調(diào)用 bootJar 打包

運(yùn)行的時(shí)候也不需要指定 -Djava.ext.dirs=./lib 或 -Dloader.path=./lib 了, 將 lib 目錄放在 jar 包同級目錄下, 直接 -jar運(yùn)行就可以了

# java -Djava.ext.dirs=./lib -jar bootrun.jar
java -jar bootrun.jar

loader.path

loader.path 是 Spring 提供的配置參數(shù)

可以使用 --classpath / -cp 指定類加載的路徑,但 classpath 的生效是有條件的

# 運(yùn)行 class 生效
java -cp .;lib/x.jar Test
# 運(yùn)行 jar 失效
java -cp lib/x.jar -jar app.jar

使用 java -jar boot.jar 時(shí) (此時(shí) -cp 無效), 可以使用 loader.path 指定類加載路徑加載其他 jar, loader.path 實(shí)現(xiàn)了 classpath 的功能

但 loader.path 生效是有條件的

當(dāng) MANIFEST.MF 的 Main-Class 為:

  • PropertiesLauncher (額外配置) 生效
  • JarLauncher (默認(rèn)配置) 失效 (啟動(dòng)會快一些)

為了使用 loader.path,需要把 jar 包的 Main-Class 配置為 PropertiesLauncher,在 build.gradle 中如下配置,可參考 Using the PropertiesLauncher

bootJar {
    manifest {
        attributes 'Main-Class': 'org.springframework.boot.loader.PropertiesLauncher'
    }
}

So by adding all the needed classpaths to the loader.path variable, spring will be able to boostrap the application. (details)

到此這篇關(guān)于SpringBoot 項(xiàng)目瘦身(maven/gradle)的文章就介紹到這了,更多相關(guān)SpringBoot 瘦身maven/gradle內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 通過入門demo簡單了解netty使用方法

    通過入門demo簡單了解netty使用方法

    這篇文章主要介紹了通過入門demo簡單了解netty使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 非常詳細(xì)的Java異常處理機(jī)制知識整理大全

    非常詳細(xì)的Java異常處理機(jī)制知識整理大全

    Java異常指在程序運(yùn)行時(shí)可能出現(xiàn)的一些錯(cuò)誤,比如試圖打開一個(gè)根本不存在的文件等,異常處理將會改變程序的控制流程,讓程序有機(jī)會對錯(cuò)誤做出處理,下面這篇文章主要給大家介紹了關(guān)于Java異常處理機(jī)制知識整理的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • IDEA中安裝和使用Lombok插件的方法

    IDEA中安裝和使用Lombok插件的方法

    Lombok是一個(gè)可以通過簡單的注解形式來幫助我們簡化消除一些必須有但顯得很臃腫的Java代碼的工具,通過使用對應(yīng)的注解,可以在編譯源碼的時(shí)候生成對應(yīng)的方法,本文重點(diǎn)給大家介紹IDEA中安裝和使用Lombok插件的方法,感興趣的朋友一起看看吧
    2021-06-06
  • Java將時(shí)間戳轉(zhuǎn)換為Date對象的方法小結(jié)

    Java將時(shí)間戳轉(zhuǎn)換為Date對象的方法小結(jié)

    在?Java?編程中,處理日期和時(shí)間是一個(gè)常見需求,特別是在處理網(wǎng)絡(luò)通信或者數(shù)據(jù)庫操作時(shí),本文主要為大家整理了Java中將時(shí)間戳轉(zhuǎn)換為Date對象的方法,希望對大家有所幫助
    2024-12-12
  • mybatis 連接mysql數(shù)據(jù)庫 tinyint 為boolean類型詳解

    mybatis 連接mysql數(shù)據(jù)庫 tinyint 為boolean類型詳解

    這篇文章主要介紹了mybatis 連接mysql數(shù)據(jù)庫 tinyint 為boolean類型詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 經(jīng)典的Java面試題及回答集錦(基礎(chǔ)篇)

    經(jīng)典的Java面試題及回答集錦(基礎(chǔ)篇)

    本文給大家收藏整理了java面試題及回答,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2018-03-03
  • 淺談SpringBoot如何正確攔截thymeleaf異常

    淺談SpringBoot如何正確攔截thymeleaf異常

    Thymeleaf是一個(gè)模板引擎工具,主要用于頁面渲染操作,本文主要介紹了淺談SpringBoot如何正確攔截thymeleaf異常,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Java實(shí)現(xiàn)郵箱發(fā)送功能實(shí)例(阿里云郵箱推送)

    Java實(shí)現(xiàn)郵箱發(fā)送功能實(shí)例(阿里云郵箱推送)

    這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)郵箱發(fā)送功能的相關(guān)資料,利用阿里云郵箱推送,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • SpringBoot快速入門及起步依賴解析(實(shí)例詳解)

    SpringBoot快速入門及起步依賴解析(實(shí)例詳解)

    SpringBoot?是由?Pivotal?團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化?Spring?應(yīng)用的初始搭建以及開發(fā)過程,這篇文章主要介紹了SpringBoot快速入門及起步依賴解析,需要的朋友可以參考下
    2022-10-10
  • Java中使用fileupload組件實(shí)現(xiàn)文件上傳功能的實(shí)例代碼

    Java中使用fileupload組件實(shí)現(xiàn)文件上傳功能的實(shí)例代碼

    這篇文章主要介紹了Java中使用fileupload組件實(shí)現(xiàn)文件上傳功能的實(shí)例代碼,需要的朋友可以參考下
    2017-05-05

最新評論

通海县| 旬邑县| 白水县| 怀宁县| 中方县| 仁怀市| 盐城市| 雷波县| 宜君县| 荣成市| 贵州省| 新宁县| 浦县| 景洪市| 恭城| 铜川市| 吴江市| 抚松县| 阿坝| 板桥市| 溧水县| 德保县| 广东省| 平昌县| 老河口市| 府谷县| 哈巴河县| 娄烦县| 阜新市| 巴林右旗| 望都县| 衡东县| 盘锦市| 昌都县| 确山县| 兴化市| 晋中市| 禄劝| 巴中市| 张家川| 扎赉特旗|