Maven中利用assembly插件打包jar包
在maven中有幾種方法打包項(xiàng)目,在之前的一篇博客中【Java】打包Jar包并用腳本執(zhí)行,已經(jīng)介紹了怎么在沒有maven插件的情況下,怎么打包項(xiàng)目,并執(zhí)行的。
而本篇?jiǎng)t是在上一篇文章【Maven】Maven系列(一)——環(huán)境安裝配置和新建maven項(xiàng)目之后,總結(jié)一下怎么使用maven插件進(jìn)行打包項(xiàng)目。
maven中有多種插件提供了打包功能,分別是maven-jar-plugin(用來打包成jar包),maven-war-plugin(打包成war包)、maven-assembly-plugin。
這里只介紹怎么使用assembly插件打包項(xiàng)目成jar包。
主要有以下幾個(gè)步驟(前提是IDE中已經(jīng)有maven插件了)
1,配置pom.xml文件
2,執(zhí)行maven命令中的assembly:assembly命令進(jìn)行打包
3,將對(duì)應(yīng)的資源文件復(fù)制出來放到同生成的jar包文件同目錄下,以便運(yùn)行jar包時(shí)候可以找到相應(yīng)的資源。
4,利用java -jar命令運(yùn)行jar包
1,在項(xiàng)目的pom.xml文件中添加一個(gè)標(biāo)簽
<plugin></plugin>
<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.hey.main.Main</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin>
如下是一個(gè)完整的pom.xml文檔:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>ShareBike</groupId> <artifactId>ShareBike</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <build> <sourceDirectory>src</sourceDirectory> <resources> <resource> <directory>src</directory> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>main.PushTrailVerticle</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-core</artifactId> <version>3.4.2</version> </dependency> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-web</artifactId> <version>3.4.2</version> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <dependency> <groupId>ojdbc</groupId> <artifactId>ojdbc</artifactId> <version>oracle12c</version> </dependency> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-web-client</artifactId> <version>3.4.2</version> </dependency> <!-- https://mvnrepository.com/artifact/com.vividsolutions/jts --> <dependency> <groupId>com.vividsolutions</groupId> <artifactId>jts</artifactId> <version>1.14</version> </dependency> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>3.3.0</version> </dependency> </dependencies> </project>
上面的mainClass標(biāo)簽中的內(nèi)容替換成自己的main函數(shù)所在的類,前面要包含package名字,也就是package_name.MainClassName。
2,執(zhí)行打包命令
2.1 右擊選中項(xiàng)目的properties–>run as–>maven build….
2.2執(zhí)行assembly:assembly命令
在Main窗口下的Goals里填寫assembly:assembly,然后點(diǎn)擊run就可以了。
2.3 run之后就會(huì)在項(xiàng)目的target目錄下生成一個(gè)
項(xiàng)目名-版本號(hào)-with-dependencies的一個(gè)jar包,這個(gè)是個(gè)fat jar包,里面包含了項(xiàng)目里用到的依賴項(xiàng)。
當(dāng)然也會(huì)生成另外一個(gè)沒有包含依賴項(xiàng)的jar包。
3 部署項(xiàng)目
因?yàn)轫?xiàng)目中還用到了很多資源文件,一些txt,properties文件等等,因此在部署的時(shí)候,還需要將這些文件存放在和jar包同路徑下(否則就會(huì)出現(xiàn)運(yùn)行時(shí)資源找不到的異常)。這一點(diǎn)和【Java】打包Jar包并用腳本執(zhí)行里一樣,可以參照這一篇文章。
當(dāng)然也可以編輯pom.xml文件中的內(nèi)容,打包時(shí)把資源文件一起打包進(jìn)去,但是我們一些配置文件一般都是可能需要自己可以手動(dòng)編輯的,如果打包到j(luò)ar包中,就無法編輯了。
4 運(yùn)行jar包
編寫一個(gè)bat命令文件,里面的內(nèi)容就是java -jar jar_name。
該命令文件也放在和jar同目錄下,點(diǎn)擊即可運(yùn)行程序。
到此這篇關(guān)于Maven中利用assembly插件打包jar包的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java案例之HashMap集合存儲(chǔ)學(xué)生對(duì)象并遍歷
這篇文章主要介紹了Java案例之HashMap集合存儲(chǔ)學(xué)生對(duì)象并遍歷,創(chuàng)建一個(gè)HashMap集合,鍵是學(xué)號(hào)(String),值是學(xué)生對(duì)象(Student),存儲(chǔ)三個(gè)鍵值對(duì)元素并遍歷,下文具體操作需要的朋友可以參考一下2022-04-04StateMachine 狀態(tài)機(jī)機(jī)制深入解析
這篇文章主要介紹了,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08springboot自定義redis-starter的實(shí)現(xiàn)
這篇文章主要介紹了springboot自定義redis-starter的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Java使用modbus-master-tcp實(shí)現(xiàn)modbus tcp通訊
這篇文章主要為大家詳細(xì)介紹了另外一種Java語言的modbux tcp通訊方案,那就是modbus-master-tcp,文中的示例代碼講解詳細(xì),需要的可以了解下2023-12-12IDEA 自動(dòng)生成 JPA 實(shí)體類的圖文教程
這篇文章主要介紹了IDEA 自動(dòng)生成 JPA 實(shí)體類的圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07使用Mybatis-Plus實(shí)現(xiàn)對(duì)象屬性自動(dòng)填充功能
這篇文章主要介紹了如何使用Mybatis-Plus實(shí)現(xiàn)對(duì)象屬性自動(dòng)填充功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,感興趣的朋友們下面隨著小編來一起來學(xué)習(xí)吧2024-01-01Java實(shí)現(xiàn)NIO聊天室的示例代碼(群聊+私聊)
這篇文章主要介紹了Java實(shí)現(xiàn)NIO聊天室的示例代碼(群聊+私聊),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05DoytoQuery中的關(guān)聯(lián)查詢方案示例詳解
這篇文章主要為大家介紹了DoytoQuery中的關(guān)聯(lián)查詢方案示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12