[精讚] [會員登入]
1405

【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

你可能感興趣的文章

【JDA/discord bot】取得頻道第一筆或最新(最後一筆)的歷史訊息 在不處理訊息的先後順序下取得相關的歷史訊息

【Wicket】[CSP] Content-Security-Policy & Content-Security-Policy-Report-Only Wicket 預設開啟的,所以如果要加載外部資源甚至是同源資源都會被擋下。

【Discord bot 6.2.1】[JDA6](StringSelectMenu)如何從訊息中提取選單並取得使用者選擇的選項 從 JDA5 使用到現在的 JDA6,時間過得還真快

【JAVA】[java.lang.Class]如何不透過new來實體化class 在某些極端狀態下,我們沒有辦法直接將實體化後的 Object 傳入函數內,只能採用傳入 Class 在實體化成物件這種極端的方式來進行

【PaperMC - API】如何發送指令到伺服器內 How to sending or executing commands to server

【Wickct】(link) <a> 如何新增超連結 簡單來說有兩種方式,小編個人比較偏好 的方法

隨機好文

【手遊介紹】小品手遊─寶箱是我的!(SUMMONER'S GREED) 輕鬆無腦的塔防遊戲,殺時間本小編推薦的遊戲之一

高捷少女:地下城的探險少女③ 過了十分鐘後,前方的天花板滴下一滴水珠,發出「噠」一聲響亮地落在石地上,讓大家嚇一跳。     「什麼嘛,只是水珠而已。」艾米撫著胸口噓了一聲。     忽然間,耐耐的臉色發白起來。「各位,你們看

高捷少女:美麗島的守護者① 婕兒跟耐耐嚇得臉色發白。「耐耐,小穹有這方面的愛好喔?」婕兒小聲地說。耐耐默默的拿出筆記本,臉上浮現一層微笑:「這麼大的新聞,要趕快記下來!」

【英翻中歌詞】(二創歌)妖精大戰爭 ~Fairy Wars 妖精大戦争 ~Fairy Wars Star light… star bright… 星光閃耀...星輝熠熠... We’re the three brightest stars in the sky tonight! 我們是今晚

【數學】徐氏數學簡明講義(三) 第二章 直線與園 P2.1-17 Q28 28.若X、Y∈R,試求之最小值___ 解: 配方 畫圖 做對稱點 求其直線長度 解