欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

圖文詳解Maven工程打jar包的N種方式

 更新時(shí)間:2022年09月02日 09:37:45   作者:Hugh_Guan  
最近在打包maven項(xiàng)目時(shí),該項(xiàng)目中僅有一個(gè)測(cè)試類,想打成jar包運(yùn)行測(cè)試,所以下面這篇文章主要給大家介紹了關(guān)于Maven工程打jar包的N種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、IDEA自帶打包插件

內(nèi)容:此種方式可以自己選擇制作胖包或者瘦包,但推薦此種方式制作瘦包。

輸出:輸出目錄在out目錄下

流程步驟

第一步: 依次選擇 file->projecct structure->artifacts->點(diǎn)擊+ (選擇jar)->選擇 from module with dependencies

第二步:彈出窗口中指定Main Class,是否選擇依賴jar包,是否包含測(cè)試。(盡量不選依賴包,防止依賴包選擇不全)

第三步:點(diǎn)擊Build–>Build Artifacts–>選擇bulid

二、maven插件打包

輸出:輸出目錄在target目錄下

2.1 制作瘦包(直接打包,不打包依賴包)

內(nèi)容:僅打包出項(xiàng)目中的代碼到JAR包中。

方式:在pom.xml中添加如下plugin; 隨后執(zhí)行maven install

 <!-- java編譯插件 -->
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-compiler-plugin</artifactId>
	<version>指定版本</version>
	<configuration>
		<source>1.8</source>
		<target>1.8</target>
		<encoding>UTF-8</encoding>
	</configuration>
</plugin>

2.2 制作瘦包和依賴包(相互分離)

內(nèi)容:將依賴JAR包輸出到lib目錄方式(打包方式對(duì)于JAVA項(xiàng)目是通用的)

將項(xiàng)目中的JAR包的依賴包輸出到指定的目錄下,修改outputDirectory配置,如下面的${project.build.directory}/lib。

方式

  1. pom.xml的build>plugins中添加如下配置。
  2. 點(diǎn)擊maven project(右邊欄)->選擇Lifecycle->點(diǎn)擊package打包
    注意:如果想將打包好的JAR包通過(guò)命令直接運(yùn)行,如java -jar xx.jar。需要制定manifest配置的classpathPrefix與上面配置的相對(duì)應(yīng)。如上面把依賴JAR包輸出到了lib,則這里的classpathPrefix也應(yīng)指定為lib/;同時(shí),并指定出程序的入口類,在配置mainClass節(jié)點(diǎn)中配好入口類的全類名。
<plugins>
<!-- java編譯插件 -->
<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>
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<configuration>
		<archive>
			<manifest>
				<addClasspath>true</addClasspath>
				<classpathPrefix>lib/</classpathPrefix>
				<mainClass>com.yourpakagename.mainClassName</mainClass>
			</manifest>
		</archive>
	</configuration>
</plugin>
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-dependency-plugin</artifactId>
	<executions>
		<execution>
			<id>copy</id>
			<phase>install</phase>
			<goals>
				<goal>copy-dependencies</goal>
			</goals>
			<configuration>
				<outputDirectory>${project.build.directory}/lib</outputDirectory>
			</configuration>
		</execution>
	</executions>
</plugin>
</plugins>

注意:默認(rèn)的classpath會(huì)在jar包內(nèi)。為了方便,可以在Main方法配置后加上manifestEntries配置,指定classpath。

<plugin>  
	<groupId>org.apache.maven.plugins</groupId>  
	<artifactId>maven-jar-plugin</artifactId>  
	<configuration>  
		<classesDirectory>target/classes/</classesDirectory>  
		<archive>  
			<manifest>  
				<!-- 主函數(shù)的入口 -->  
				<mainClass>com.yourpakagename.mainClassName</mainClass>  
				<!-- 打包時(shí) MANIFEST.MF文件不記錄的時(shí)間戳版本 -->  
				<useUniqueVersions>false</useUniqueVersions>  
				<addClasspath>true</addClasspath>  
				<classpathPrefix>lib/</classpathPrefix>  
			</manifest>  
			<manifestEntries>  
				<Class-Path>.</Class-Path>  
			</manifestEntries>  
		</archive>  
	</configuration>  
</plugin>  

2.3 制作胖包(項(xiàng)目依賴包和項(xiàng)目打?yàn)橐粋€(gè)包)

內(nèi)容:將項(xiàng)目中的依賴包和項(xiàng)目代碼都打?yàn)橐粋€(gè)JAR包

方式

pom.xml的build>plugins中添加如下配置;

點(diǎn)擊maven project(右邊欄)->選擇Plugins->選擇assembly->點(diǎn)擊assembly:assembly

注意:1. 針對(duì)傳統(tǒng)的JAVA項(xiàng)目打包;

2. 打包指令為插件的assembly命令,盡量不用package指令。

<plugin>
	<groupId>org.apache.maven.plugins</groupId>  
	<artifactId>maven-assembly-plugin</artifactId>  
	<version>2.5.5</version>  
	<configuration>  
		<archive>  
			<manifest>  
				<mainClass>com.xxg.Main</mainClass>  
			</manifest>  
		</archive>  
		<descriptorRefs>  
			<descriptorRef>jar-with-dependencies</descriptorRef>  
		</descriptorRefs>  
	</configuration>  
</plugin> 

2.4 制作胖包(transform部分自定義)

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-shade-plugin</artifactId>
	<version>2.4.3</version>
	<executions>
		<execution>
			<phase>package</phase>
			<goals>
				<goal>shade</goal>
			</goals>
			<configuration>
				<filters>
					<filter>
						<artifact>*:*</artifact>
						<excludes>
							<exclude>META-INF/*.SF</exclude>
							<exclude>META-INF/*.DSA</exclude>
							<exclude>META-INF/*.RSA</exclude>
						</excludes>
					</filter>
				</filters>
				<transformers>
					<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
						<resource>META-INF/spring.handlers</resource>
					</transformer>
					<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
						<resource>META-INF/spring.schemas</resource>
					</transformer>
					<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
						<resource>META-INF/spring.tooling</resource>
					</transformer>
					<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
						<mainClass>com.xxx.xxxInvoke</mainClass>
					</transformer>
				</transformers>
				<minimizeJar>true</minimizeJar>
				<shadedArtifactAttached>true</shadedArtifactAttached>
			</configuration>
		</execution>
	</executions>
</plugin>

三、SpringBoot項(xiàng)目打包

內(nèi)容:將當(dāng)前項(xiàng)目里所有依賴包和當(dāng)前項(xiàng)目的源碼都打成一個(gè)JAR包,同時(shí)還會(huì)將沒(méi)有依賴包的JAR包也打出來(lái),以.original保存

方式

在pom.xml的build>plugins中加入如下配置點(diǎn)擊maven project(右邊欄)->選擇Lifecycle->點(diǎn)擊package或install打包

<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

四、Scala項(xiàng)目打包

方式

在pom.xml的build>plugins中加入如下配置

點(diǎn)擊maven project(右邊欄)->選擇Lifecycle->點(diǎn)擊package或install打包

<plugin>
	<groupId>org.scala-tools</groupId>
	<artifactId>maven-scala-plugin</artifactId>
	<executions>
		<execution>
			<goals>
				<goal>compile</goal>
					<goal>testCompile</goal>
				</goals>
		</execution>
	</executions>
	<configuration>
		<scalaVersion>${scala.version}</scalaVersion>
		<args>
			<arg>-target:jvm-1.5</arg>
		</args>
	</configuration>
</plugin>

五、groovy項(xiàng)目打包

方式

在pom.xml的build>plugins中加入如下配置

點(diǎn)擊maven project(右邊欄)->選擇Lifecycle->點(diǎn)擊package或install打包

<plugin>
	<groupId>org.codehaus.gmavenplus</groupId>
	<artifactId>gmavenplus-plugin</artifactId>
	<version>1.2</version>
	<executions>
		<execution>
			<goals>
				<goal>addSources</goal>
				<goal>addStubSources</goal>
				<goal>compile</goal>
				<goal>execute</goal>
			</goals>
		</execution>
	</executions>
</plugin>

總結(jié)

到此這篇關(guān)于Maven工程打jar包的N種方式的文章就介紹到這了,更多相關(guān)Maven工程打jar包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java漏桶算法的簡(jiǎn)單代碼實(shí)例

    Java漏桶算法的簡(jiǎn)單代碼實(shí)例

    這篇文章主要介紹了Java漏桶算法的簡(jiǎn)單代碼實(shí)例,漏桶算法的意義在于能夠平滑請(qǐng)求,不給下游服務(wù)造成過(guò)大壓力,特別適用于突發(fā)流量或者定時(shí)任務(wù)拉取大量數(shù)據(jù)時(shí),需要處理大量數(shù)據(jù)或者請(qǐng)求的場(chǎng)景,需要的朋友可以參考下
    2024-01-01
  • spring整合struts2過(guò)程詳解

    spring整合struts2過(guò)程詳解

    這篇文章主要介紹了spring整合struts2過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Android開(kāi)發(fā)中實(shí)現(xiàn)用戶注冊(cè)和登陸的代碼實(shí)例分享

    Android開(kāi)發(fā)中實(shí)現(xiàn)用戶注冊(cè)和登陸的代碼實(shí)例分享

    這篇文章主要介紹了Android開(kāi)發(fā)中實(shí)現(xiàn)用戶注冊(cè)和登陸的代碼實(shí)例分享,只是實(shí)現(xiàn)基本功能,界面華麗度就請(qǐng)忽略啦XD 需要的朋友可以參考下
    2015-12-12
  • 如何利用jwt來(lái)保護(hù)你的接口服務(wù)

    如何利用jwt來(lái)保護(hù)你的接口服務(wù)

    項(xiàng)目軟件要對(duì)外提供部分定制接口,為了保證軟件數(shù)據(jù)的安全性,這篇文章主要給大家介紹了關(guān)于如何利用jwt來(lái)保護(hù)你的接口服務(wù)的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • IDEA配置jdk環(huán)境變量的方法

    IDEA配置jdk環(huán)境變量的方法

    這篇文章主要介紹了IDEA配置jdk環(huán)境變量的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java調(diào)用計(jì)算機(jī)攝像頭拍照實(shí)現(xiàn)過(guò)程解析

    Java調(diào)用計(jì)算機(jī)攝像頭拍照實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Java調(diào)用計(jì)算機(jī)攝像頭拍照實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • springcloud之Feign、ribbon如何設(shè)置超時(shí)時(shí)間和重試機(jī)制

    springcloud之Feign、ribbon如何設(shè)置超時(shí)時(shí)間和重試機(jī)制

    這篇文章主要介紹了springcloud之Feign、ribbon如何設(shè)置超時(shí)時(shí)間和重試機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java時(shí)間轉(zhuǎn)換成unix時(shí)間戳的方法

    Java時(shí)間轉(zhuǎn)換成unix時(shí)間戳的方法

    這篇文章主要為大家詳細(xì)介紹了Java時(shí)間轉(zhuǎn)換成unix時(shí)間戳的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 基于Retrofit+Rxjava實(shí)現(xiàn)帶進(jìn)度顯示的下載文件

    基于Retrofit+Rxjava實(shí)現(xiàn)帶進(jìn)度顯示的下載文件

    這篇文章主要為大家詳細(xì)介紹了基于Retrofit+Rxjava實(shí)現(xiàn)帶進(jìn)度顯示的下載文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Java泛型定義與用法入門示例

    Java泛型定義與用法入門示例

    這篇文章主要介紹了Java泛型定義與用法,結(jié)合實(shí)例形式分析了java泛型的功能、定義、應(yīng)用場(chǎng)景及相關(guān)使用注意事項(xiàng),需要的朋友可以參考下
    2019-08-08

最新評(píng)論