[精讚] [會員登入]
1471

【Maven】如何創建一個簡單可執行的JAR檔

滿重要的一個小功能,畢竟有時候是要傳遞的是JAR檔,而不是直接透過Maven直接部屬之類的

分享此文連結 //n.sfs.tw/15508

分享連結 【Maven】如何創建一個簡單可執行的JAR檔@小編過路君子
(文章歡迎轉載,務必尊重版權註明連結來源)
2022-03-30 23:29:37 最後編修
2021-11-27 00:00:39 By 過路君子
 

大家好,這裡是開始整理手上所有工具的小編過路君子

其實以前剛開始學Maven時小編有弄過,但不懂和不漂亮,所以當時就沒有發布上來了。

 

 

如果各位今天是要打包成 War檔的話可以參考小編這篇: 【Maven】如何創建一個簡單可部屬的WAR檔@小編過路君子

其實標準解法在 Maven的官網上面就有了,而且非常清楚,如果懶得看一堆字的可以直接前往這個網頁複製貼上。

最初最初小編是用 exec來達成這件事情,但現在觀念比較熟悉了,就放棄了 exec,直接採用官方提供的方法。

那既然要提到 Maven,第一件最重要的事情當然是先把整個目錄結構創建出來啦,直接上圖。

(所有圖片點擊都可以放大、變高清)

 

如何?製圖技術也有上升吧~想想上一篇是用純文字湊出來的呢。

言歸正傳,然後將以下的內容全部貼進去到 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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>editor.passing.jinzan</groupId>
	<artifactId>packageJAR</artifactId>
	<version>1.0.0</version>

	<name>pixiJS-web Maven Webapp</name>
	<url>http://maven.apache.org</url>

	<packaging>jar</packaging>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
	</properties>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<version>3.2.4</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<transformers>
								<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
									<mainClass>editor.passing.jinzan.index</mainClass>
								</transformer>
							</transformers>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<artifactId>maven-clean-plugin</artifactId>
				<version>3.1.0</version>
			</plugin>
			
			<plugin>
				<artifactId>maven-resources-plugin</artifactId>
				<version>3.0.2</version>
			</plugin>
			<plugin>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.22.1</version>
			</plugin>
			<plugin>
				<artifactId>maven-install-plugin</artifactId>
				<version>2.5.2</version>
			</plugin>
			<plugin>
				<artifactId>maven-deploy-plugin</artifactId>
				<version>2.8.2</version>
			</plugin>
			<plugin>
				<artifactId>maven-site-plugin</artifactId>
				<version>3.7.1</version>
			</plugin>
			<plugin>
				<artifactId>maven-project-info-reports-plugin</artifactId>
				<version>3.0.0</version>
			</plugin>
		</plugins>
	</build>

</project>

 

然後接著打開位於 ./src/main/java/editor/passing/jinzan的 index.java檔案,同時將以下的程式碼貼入 index.java裡面。

package editor.passing.jinzan;

public class index
{
    public static void main(String[] args)
    {
        System.out.println("Hello World!");
    }
}

 

然後下個簡單的指令將其打包。

Linux mvn package

 

然後嘗試執行看看有沒有 "Hello World!" 字樣,如果有,恭喜各位,一切正常,可以開始在 index.java裡面撰寫您個人所需的程式碼了。

Linux java -jar target/packageJAR-1.0.0.jar

 

 

 

後記

哇喔,超級飆火車,但是說真的這就是使用 Maven的好處,就只要告訴對方目錄結構和 pom.xml檔案就可以執行出完完全全一模一樣的結果。

順帶一提,index.java裡面的 "public static void main(String[] args)" 這行不能寫成其他的樣子,打包的時候沒問題,但一執行就會出錯。

END

你可能感興趣的文章

【Docker&Wildfly】(bitnami/wildfly)如何從零開始創建網頁伺服器 使用他人的 docker image 來架設我們的 wildfly web server

【Wicket】[nonce]如何導入css以及javascript 如果只是用一般的 HTML link 或是 script 標籤來寫,會被 CSP 擋住,禁止加載資源,那我們除了關閉 CSP 以外還有沒有辦法來解決呢?

【CoreProtect】[SpigotMC] (進階篇) 如何直接存取資料 大家好,這裡是準備要去參加FF38的小編過路君子 本來只要自己去,結果臨時有人說要一起去,那...好吧!走~ 對於一般人

【Javascript】(Event)常用的網頁事件 不寫下來絕對下又會忘記,然後每次又都要回到MDN去查,麻煩

【Discord bot 2.0.1】(discord.ui.View)如何將舊機器人升級至目前最新版本 很多時候升級軟體是為了讓別人覺得你的程式很先進,但這次卻是因為要使用某個新功能

【Wickct】(縮短網址) 如何將網頁掛載到特定路徑下 Wildfly的預設網址又臭又長又不好記,而且會被看到後端的目錄路徑安排,當然能藏就盡量藏起來啦

隨機好文

高捷少女:購票大作戰② 一個不好的預感浮現,艾米莉亞開始檢查屋子四處。窗戶跟陽台都有關好,也沒有被打開的跡象。但一股無形的壓力,開始在寂靜的公寓中蔓延,她不安地嚥一下喉嚨。最後,她走向那扇窗戶,那前天晚上,白龍為了逃脫,而撞

高捷少女:美麗島的守護者⑤  雖然暫時不用怕牠們了,可是一直躲在這裡終究不是辦法,小雅心想。她看看四周,這間更衣室沒有窗戶或後門,她不禁著急起來,不可能一直躲在這裡面,但從門出去只會被群貓圍攻而已。小雅低下頭苦思該怎麼辦,過了不

高捷少女:耐耐的新年驚喜① 耐耐拿出手機。「我回來囉。」她說。幾分鐘後,木門緩緩打開。當它完全開啟的那一刻,小穹手中的包包掉到地上;艾米揉揉雙眼,確定自己看見的景象;婕兒的三魂七魄飛到了九霄雲外。

【札記】在發文上遇到的問題 如果遇到問題,是選擇丟在一旁還是將其解決,又或者是看情況?

【英翻中歌詞】(二創歌)二色蓮花蝶 ~ Red and White A pack of humans... no, a pack of villains... no, a pack of strangers wander in freely. 一群人類...不,一群惡