[精讚] [會員登入]
1351

【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

你可能感興趣的文章

【Linux】[CentOS 8] How to update sudo instruction The last time I wanted to update the sudo command should be 2017, right? It's 2021 in a blink of an

【Python3】[Django] (Windows / Liunx) 如何從零開始創建一個網站 除了最基本的運作以外,還小小的加上了如何自導向特定目錄。

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

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

【C++】SFML安裝於Microsoft Visual Studio 2019 此方法僅適用單個C++專案,因為一次就適用整台電腦的方式有人寫了,而且寫得非常不錯。

【Discord bot】[botton]按鈕的使用、響應和關閉 Discord的botton通常都要和View配合使用。

隨機好文

高捷少女:小穹與果仁巧克力㊥ 艾咪臉上泛起笑容說:「妳知道嗎?就跟花語一樣,每一種巧克力也都有各自的涵義:薄荷巧克力代表初戀;卡通巧克力代表天真爛漫;而果仁巧克力代表的是窩心,還有想陪伴對方的心情,這在德國是女生之間在慶生時會彼此

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

高捷少女:地下城的探險少女(終)  小穹眨眨眼睛,然後說了出來。「其實,從剛剛開始,我就在想了……是在看過這本日記之後。」她拿出日記。「我想……我們尋找寶藏的想法,是不是真的正確的?」「怎麼說呢?」耐耐好奇地問。「這個埋藏寶藏的人,在

高捷少女:耐耐的新年驚喜④ 「雖然夫人一直有在保養身體,可是年紀畢竟不小了,醫生曾經說過,不管是不是假性陣痛,一旦夫人有感覺了便立刻送到醫院。」管家爺爺說:「我們已經打電話給附近的大型醫院,救護車很快便會來到這裡。」「去看伯母吧

【歌評】蓮台野夜行 - 夜のデンデラ野を逝く 走在夜晚的蓮台野 墳場,總是瀰漫著死亡的氣氛,但是,稍微的來探險一下應該是沒關係的吧?