2013-08-23 77 views
4

我要打包的形式,很容易散發,類似於Java的JAR文件用做了Groovy的CLI應用程序。我一直無法找到任何似乎能夠做到的事情。我發現一對夫婦像this東西都是用於一次性的腳本,但沒有什麼可以編譯由許多單獨的Groovy文件和資源數據的整個Groovy的應用程序。包裝一個Groovy應用

我不一定需要有Groovy的獨立的可執行文件是它的一部分(雖然這將是很好),而這是不打算被其他JVM語言中使用的庫。我只想要一個簡單的打包版本的應用程序。

編輯: 基於我得到的一些迴應,我認爲我對自己的目標沒有足夠清晰。我期待的基本上是Groovy可以支持的存檔格式。這裏的目標是使這更容易分發。現在,最好的方法是將其壓縮,讓用戶解壓縮,然後修改批處理/ shell文件以啓動它。我希望找到一種方法來使它更像一個可執行的JAR文件,用戶只需運行一個文件即可。

我知道,Groovy的編譯成JVM兼容的字節碼,但我沒有試圖讓這個爲Java代碼運行。我在運行時根據用戶的配置對Groovy類進行了一些動態添加,Java將無法處理它。正如我在原文中所說的,將Groovy可執行文件包含在歸檔文件中是一種很好的方法。不過,我確實需要Groovy是運行的可執行文件,而不是Java。

+0

爲什麼不只是創建應用程序的罐子和分發,隨着(你依賴和罐子)所需的Groovy的罐子,就像您使用Java? –

回答

1

我已經使用eclipse Fat Jar pluginYet Another Java Service Wrapper的組合有很多成功的:產生的jar文件可以在命令行上一樣運行。

本質上講,這成爲一個「Java的問題不是一個常規問題。脂肪罐是無痛使用。這可能需要您多試幾次來讓你的單罐子權,但一旦所有的依賴壓扁成一個單一的罐子,你現在是關閉的在命令行中使用

java -jar application.jar 

運行它,我然後包裝這些罐子作爲服務。我經常開發執行一些任務的基於獨立Groovy的服務。我使用Yet Another Java Service將其設置爲Windows服務器上的服務,並使用各種技術與Windows服務進行交互。

+0

這似乎與我正在尋找的東西接近,但我在應用程序中正在進行一些高級事件。您可以將其配置爲使用用戶在運行時定義的Groovy類,所以我相當確信Groovy仍然需要是運行我的應用程序的可執行文件,而不是Java。 – monitorjbl

+0

我在這個部署中使用Groovy在字符串中引入的方法,所以我不認爲它和你自己的類中的元編程有什麼不同。比較字符串的JDK文檔: Java - http://docs.oracle.com/javase/6/docs/api/ Groovy - http://groovy.codehaus.org/groovy-jdk/java/lang/串。html#findAll(java.util.regex.Pattern) –

+0

Groovy類在明文Groovy腳本中定義,並在運行時提供。你在Groovy代碼中的任何東西,包括元類的東西,在編譯時都可以編譯成JVM字節碼,但這是不同的。用戶必須將他們的腳本編譯成.class文件才能在Java中使用它們。使用Groovy,您可以將純文本腳本添加到classpath中,這非常棒,我想保留該行爲。 – monitorjbl