簡體   English   中英

Java包裝/構建通用技術Jar文件專門

[英]Java Packaging/Building Common Techniques Jar File Specifically

我查看了所有常見帖子的網站,但我的問題略有不同:

打包一個包含許多其他jar文件作為依賴項的簡單Java應用程序的最佳實踐是什么?

例如:我有一個帶有main的foo.java,以及從foo.java訪問的foo1.java,foo2.java。 我在我的eclipse構建路徑上使用log4j.jar,mysql.jar。

現在我正在使用ant,它可以很好地構建它。 我所做的是編寫一個引用所有classpath和log4j信息的簡單.sh腳本。 但這意味着我必須給他們所有這些罐子,他們必須在正確的位置。 我想能夠說“java -jar foo.jar”並讓它在任何機器上運行而無需傳輸任何其他文件。

也許.jar不是最好的方式。 我只是希望能夠將一個文件提供給不知道如何設置類路徑和所有內容的人,並讓它能夠運行。

我也很好奇最佳做法是什么。 你通常只是給某人一個罐子並給他們一個所有依賴罐的拉鏈並告訴他們把它放在類路徑上嗎?

你以某種方式制作.rpm嗎?

我不熟悉MAVEN,但如果這是最好的方法,我會做一個教程。 現在我用螞蟻。

您可以使用諸如的工具將多個jar文件合並到一個jar文件中

然后,您可以使用簡單的jar -jar yourApplication.jar啟動應用程序。

來自OneJar的網頁:

什么是One-JAR?

One-JAR允許您將Java應用程序及其依賴項Jars打包到一個可執行的Jar文件中。

JarJar和OneJar都有Ant任務,可以與他們的發行版中包含的Ant集成。


另一種選擇是使用WebStart。 這樣,所有依賴項都會自動下載,並且推出新版本是輕而易舉的。 但是在初始運行時需要Web訪問。

就個人而言,我不喜歡將所有依賴項轉儲到像這樣的單個jar文件中。 這使得查看二進制分發的人很難弄清楚程序真正依賴的內容。

我更喜歡做的是用我的jar及其所有依賴項創建一個lib目錄。 在manifest.mf中使用Class-Path:指定Class-Path: 使用Main-Class:指定主類Main-Class:在清單中。 然后使用java -jar my.jar來運行應用程序。 您只需要將您的類及其所有依賴項打包為zip或tar。

Maven確實有自動化清單創建的任務,還有一個自動化存檔創建的任務。 但是,對於一個單個工件和第三方庫很少改變的簡單項目,它很容易在ant腳本中構建。

試試Spring Boot 它會將所有JAR打包成單個胖可執行JAR,可以使用java -jar myjar.jar簡單地執行。此外,它還為您提供了許多其他很酷的功能。 檢查Spring文檔: https//docs.spring.io/spring-boot/docs/current/reference/html/getting-started-first-application.html#getting-started-first-application-executable-jar

您可以使用像JarJar這樣的工具自動將所有依賴項捆綁到一個JAR文件中,這樣您的用戶只需要一個文件就可以執行java -jar foo.jar (或雙擊它)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM