我想以易于分发的形式打包Groovy CLI应用程序,类似于Java对JAR的处理。我还没有能够找到任何似乎能够做到这一点的东西。我发现了一些像this这样的东西用于一次性脚本,但没有任何东西可以编译整个Groovy应用程序,它由很多单独的Groovy文件和资源数据组成。
我不一定需要将Groovy独立可执行文件作为其中的一部分(尽管这样会很好),并且这不是一个旨在供其他JVM语言使用的库。我想要的只是我的应用程序的简单打包版本。
修改: 根据我得到的几个回复,我不认为我对自己的目标足够清楚。我正在寻找的基本上是Groovy可以支持的存档格式。这里的目标是使这更容易分发。现在,最好的方法是将其压缩,让用户解压缩,然后修改批处理/ shell文件以启动它。我希望找到一种方法使其更像一个可执行的JAR文件,用户只需要运行一个文件。
我知道Groovy编译为兼容JVM的字节码,但我并没有试图让它作为Java代码运行。我根据用户的配置在运行时动态添加了Groovy类,Java无法处理它。正如我在原始帖子中所说,将Groovy可执行文件包含在存档中是一种很好的方法。但是,我确实需要 Groovy 来运行,而不是Java。
答案 0 :(得分:3)
Gradle Cookbook展示了如何从一个时髦的项目中制作一个“胖罐子”:http://wiki.gradle.org/display/GRADLE/Cookbook#Cookbook-Creatingafatjar
这捆绑了所有依赖项,包括groovy。生成的jar文件可以在命令行上运行,如:
java -jar myapp.jar
答案 1 :(得分:1)
我使用eclipse Fat Jar plugin和Yet Another Java Service Wrapper的组合取得了很大的成功。
基本上这会成为一个'Java'问题,而不是一个常规问题。 Fat Jar无痛使用。你可能需要几次尝试才能让你的单个jar正确,但是一旦所有的依赖关系被扁平化为一个jar,你就可以在命令行运行它了
java -jar application.jar
然后我将这些罐子包装成服务。我经常开发基于groovy的独立服务来执行某些任务。我使用Yet Another Java Service将其设置为Windows服务器上的服务,并使用各种技术安排它与Windows服务进行交互。