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

Maven項(xiàng)目打包為jar的四種方式

 更新時(shí)間:2024年10月25日 11:05:37   作者:水中加點(diǎn)糖  
本文主要介紹了Maven項(xiàng)目打包為jar的四種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

這里收集整理下以往打包MAVEN項(xiàng)目為JAR包的各種方式

直接打包,不打包依賴(lài)包

直接打包,不打包依賴(lài)包,僅打包出項(xiàng)目中的代碼到JAR包中。在POM中添加如下plugin即可,隨后執(zhí)行maven install

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

將依賴(lài)JAR包輸出到lib目錄方式

將項(xiàng)目中的JAR包的依賴(lài)包輸出到指定的目錄下,修改outputDirectory配置,如下面的${project.build.directory}/lib。如想將打包好的JAR包可以通過(guò)命令直接運(yùn)行,如java -jar xx.jar,還需要制定manifest配置的classpathPrefix與上面配置的相對(duì)應(yīng),如上面把依賴(lài)JAR包輸出到了lib,則這里的classpathPrefix也應(yīng)指定為lib/;同時(shí),并指定出程序的入口類(lèi),在配置mainClass節(jié)點(diǎn)中配好入口類(lèi)的全類(lèi)名。
這種打包方式對(duì)于JAVA項(xiàng)目是通用的,不管是不是springBoot的項(xiàng)目還是傳統(tǒng)的JAVA項(xiàng)目,都可行。

		<plugins>
			<!-- java編譯插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.7</source>
					<target>1.7</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>

有時(shí)為了方便,可以把classpath初在當(dāng)前目錄上,默認(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>  

將項(xiàng)目依賴(lài)包和項(xiàng)目打?yàn)橐粋€(gè)包

這種方式打包會(huì)將項(xiàng)目中的依賴(lài)包和項(xiàng)目代碼都打?yàn)橐粋€(gè)JAR包,其配置如下:

			<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> 

但此種方式對(duì)于傳統(tǒng)的JAVA項(xiàng)目打包沒(méi)問(wèn)題,如是打有spring框架的JAR包就不可以了??梢圆捎胢aven-shade-plugin的插件來(lái)打包,來(lái)實(shí)現(xiàn)spring框架的打包
有好幾位朋友說(shuō)不能在使用此配置時(shí)無(wú)法將項(xiàng)目的依賴(lài)也打到一個(gè)JAR包中,通過(guò)追溯發(fā)現(xiàn)由于是執(zhí)行的package命令導(dǎo)致發(fā)。此處應(yīng)執(zhí)行插件的assembly命令。如下圖:

assembly打包插件說(shuō)明

springBoot項(xiàng)目打包

springBoot項(xiàng)目打包最常用且最簡(jiǎn)單的方式是用springBoot的打包plugin

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

在POM中加入此插件,再點(diǎn)擊maven [install]或[repackge]就會(huì)把當(dāng)前項(xiàng)目里所有依賴(lài)包和當(dāng)前項(xiàng)目的源碼都打成一個(gè)JAR包,同時(shí)還會(huì)將沒(méi)有依賴(lài)包的JAR包也打出來(lái),以.original的就是了

groovy項(xiàng)目打包

如果項(xiàng)目中包含groovy代碼,默認(rèn)采用MAVEN打包時(shí)不會(huì)將groovy代碼進(jìn)行打包,需要加入如下配置

            <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>

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

相關(guān)文章

  • Java使用modbus4j實(shí)現(xiàn)modbus?tcp通訊

    Java使用modbus4j實(shí)現(xiàn)modbus?tcp通訊

    Modbus是由Modicon(現(xiàn)為施耐德電氣公司的一個(gè)品牌)在1979年發(fā)明的,是全球第一個(gè)真正用于工業(yè)現(xiàn)場(chǎng)的總線(xiàn)協(xié)議,本文主要介紹了java如何使用modbus4j實(shí)現(xiàn)modbus?tcp通訊,感興趣的可以了解下
    2023-12-12
  • JAVA基于PDF box將PDF轉(zhuǎn)為圖片的實(shí)現(xiàn)方法

    JAVA基于PDF box將PDF轉(zhuǎn)為圖片的實(shí)現(xiàn)方法

    這篇文章主要介紹了JAVA基于PDF box將PDF轉(zhuǎn)為圖片的操作方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-07-07
  • 通過(guò)Spring AOP實(shí)現(xiàn)異常捕捉機(jī)制

    通過(guò)Spring AOP實(shí)現(xiàn)異常捕捉機(jī)制

    在開(kāi)發(fā)過(guò)程中,異常處理是一個(gè)不可忽視的重要環(huán)節(jié),合理、優(yōu)雅地處理異常不僅能提高代碼的魯棒性,還能提升系統(tǒng)的用戶(hù)體驗(yàn),本文將介紹如何通過(guò)Spring AOP實(shí)現(xiàn)一個(gè)高效的異常捕捉機(jī)制,使得異常處理變得更加優(yōu)雅和統(tǒng)一,需要的朋友可以參考下
    2024-08-08
  • SpringCloud?Feign集成AOP的常見(jiàn)問(wèn)題與解決

    SpringCloud?Feign集成AOP的常見(jiàn)問(wèn)題與解決

    在使用?Spring?Cloud?Feign?作為微服務(wù)通信的工具時(shí),我們可能會(huì)遇到?AOP?不生效的問(wèn)題,這篇文章將深入探討這一問(wèn)題,給出幾種常見(jiàn)的場(chǎng)景,分析可能的原因,并提供解決方案,希望對(duì)大家有所幫助
    2023-10-10
  • Springboot 整合 Java DL4J 打造文本摘要生成系統(tǒng)

    Springboot 整合 Java DL4J 打造文本摘要生成系統(tǒng)

    本文介紹了如何使用SpringBoot整合JavaDeeplearning4j構(gòu)建文本摘要生成系統(tǒng),該系統(tǒng)能夠自動(dòng)從長(zhǎng)篇文本中提取關(guān)鍵信息,生成簡(jiǎn)潔的摘要,幫助用戶(hù)快速了解文本的主要內(nèi)容,技術(shù)實(shí)現(xiàn)包括使用LSTM神經(jīng)網(wǎng)絡(luò)進(jìn)行模型構(gòu)建和訓(xùn)練,并通過(guò)SpringBoot集成RESTfulAPI接口
    2024-11-11
  • JVM調(diào)優(yōu)OutOfMemoryError異常分析

    JVM調(diào)優(yōu)OutOfMemoryError異常分析

    這篇文章主要為大家介紹了JVM調(diào)優(yōu)OutOfMemoryError異常分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Maven下 mybatis-generator使用

    Maven下 mybatis-generator使用

    這篇文章主要介紹了Maven下 mybatis-generator使用 ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • Java面試Logback打印日志如何獲取當(dāng)前方法名稱(chēng)題解

    Java面試Logback打印日志如何獲取當(dāng)前方法名稱(chēng)題解

    這篇文章主要為大家介紹了Java面試Logback打印日志如何獲取當(dāng)前方法名稱(chēng)題解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 在IDEA中創(chuàng)建Web項(xiàng)目的詳細(xì)過(guò)程

    在IDEA中創(chuàng)建Web項(xiàng)目的詳細(xì)過(guò)程

    這篇文章主要給大家介紹了關(guān)于在IDEA中創(chuàng)建Web項(xiàng)目的詳細(xì)過(guò)程,很多朋友可能在學(xué)習(xí)java基礎(chǔ)的時(shí)候已經(jīng)熟練掌握了IDEA創(chuàng)建java項(xiàng)目的基本步驟,但隨著學(xué)習(xí)技術(shù)的不斷深入,不同的IDEA版本可能在項(xiàng)目的創(chuàng)建頁(yè)面上出現(xiàn)些許的出入,需要的朋友可以參考下
    2023-10-10
  • 如何避免Apache?Beanutils屬性copy

    如何避免Apache?Beanutils屬性copy

    這篇文章主要為大家介紹了如何避免Apache?Beanutils屬性copy的分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01

最新評(píng)論