5

我想以易于分发的形式打包 Groovy CLI 应用程序,类似于 Java 对 JAR 所做的。我还没有找到任何似乎能够做到这一点的东西。我发现了一些类似这样的东西,它们是为一次性脚本设计的,但没有任何东西可以编译由许多单独的 Groovy 文件和资源数据组成的整个 Groovy 应用程序。

我不一定需要将 Groovy 独立可执行文件作为其中的一部分(尽管那会很好),而且这不是一个旨在供其他 JVM 语言使用的库。我想要的只是我的应用程序的简单打包版本。

编辑:根据我得到的几个回复,我认为我的目标不够清楚。我正在寻找的基本上是 Groovy 可以支持的存档格式。这里的目标是使它更容易分发。现在,最好的方法是压缩它,让用户解压缩它,然后修改一个批处理/shell 文件来启动它。我希望找到一种方法让它更像一个可执行的 JAR 文件,用户只需要运行一个文件。

我知道 Groovy 可以编译为与 JVM 兼容的字节码,但我并不想让它作为 Java 代码运行。我正在根据用户的配置在运行时动态添加 Groovy 类,而 Java 将无法处理。正如我在原始帖子中所说,将 Groovy 可执行文件包含在存档中是一种不错的选择。但是,我确实需要Groovy可以运行,而不是 Java。

4

2 回答 2

4

Gradle Cookbook 展示了如何从一个 groovy 项目中制作一个“胖罐子”:http ://wiki.gradle.org/display/GRADLE/Cookbook#Cookbook-Creatingafatjar

这捆绑了所有依赖项,包括 groovy。生成的 jar 文件可以在命令行上运行,例如:

java -jar myapp.jar
于 2013-08-23T15:14:16.810 回答
1

结合使用eclipse Fat Jar 插件Yet Another Java Service Wrapper,我取得了很大的成功。

从本质上讲,这变成了一个“Java”问题,而不是一个常规问题。Fat Jar 使用起来无痛。您可能需要几次尝试才能使您的单个 jar 正确,但是一旦所有依赖项都被压缩到一个 jar 中,您现在就可以在命令行中运行它了

java -jar application.jar

然后我将这些罐子包装为服务。我经常开发独立的基于 groovy 的服务来执行某些任务。我使用 Yet Another Java Service 将其设置为 Windows 服务器上的服务,并使用各种技术安排它与 Windows 服务交互。

于 2013-08-23T19:04:24.827 回答