[精讚] [會員登入]
1304

【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]如何更新sudo指令 上次會想要更新sudo這個指令的時間應該是2017年了吧?轉眼間就2021了耶

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

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

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

【MEGAcmd】[Linux] 如何解決Unable to connect to service: error=2 用了好久的軟體突然停止一切的運作了。

【MySQL Workbench】如何透過TCP/IP進行SSL連線到遠端MySQL資料庫 通常MySQL伺服器都不是只提供某人連線,而是多人都可以連線進來使用,這時就不能繼續使用localhost的那種寫法

隨機好文

高捷少女:小穹與果仁巧克力㊦ 「如果妳跟一個女生同班三年,看過她午休流口水跟狼吞虎嚥地吃午餐,就算變成高捷代言人,也很難把她當女神的啦!」她說,小穹氣得搶走她義大利麵裡的蝦子,其他人笑得花枝招展。

高捷少女:地下城的探險少女① 婕兒心中一奇,便走上前看著仔細。那塊凹進去的地方中心大約三公分厚,越往邊緣就越淺,圓型直徑十五公分。婕兒拿出銅盤對比一下,發現兩者大小竟然一致,銅盤似乎能夠完整的嵌進去。     婕兒看著凹槽,心中

高捷少女:地下城的探險少女⑤ 小穹寫好後,耐耐看了一遍。「我想我應該辦得到。」她說完跪坐在地上,然後把古箏安放在大腿上,並將樂譜放在前面的地板。「要開始囉。」耐耐閉上眼睛,深呼吸一口氣,小穹等人在一旁看著她,心中暗自替她打氣。

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

高捷少女:美麗島的守護者④ 光之穹頂的某處垃圾桶底,一個四方形的機器持續發出聲音,機器的儀表板上顯示著「1:25:10」的字樣,外表被一層鞭炮所掩蓋。儀表板的數字每秒不斷減少,細微的嗶嗶聲也隨著數字的改變發出,但在熙來攘往的美麗