使用groovy脚本创建可执行jar

Har*_*ini 6 groovy jar

我有一个时髦的剧本Automate.groovy.该脚本没有类定义或主方法.我正在寻找创建包含脚本的jar的最简单方法.我尝试使用以下命令编译groovy脚本:

groovyc Automate.groovy
Run Code Online (Sandbox Code Playgroud)

我还有一个Manifest文件manifest-addition.txt,它指定了主类

Main-Class: Automate
Run Code Online (Sandbox Code Playgroud)

我使用命令创建了jar:

jar cvfm Automate.jar mainfest-addition.txt *.class
Run Code Online (Sandbox Code Playgroud)

这给了我一个带有Automate.class和Automate $ 1.class的jar和一个带有Main类的Manifest文件.但是当我尝试使用jar时,java -jar Automate.jar我总是得到错误

cannot find or load main class Automate.
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

应该有这样一个简单的方法来创建jar.我只需要在我的jar中使用这个脚本文件,我不想使用maven/ant/gradle来完成这项工作.有没有一种简单明了的方法呢?

Mic*_*ter 9

类文件依赖于Groovy.使用可嵌入的jar将解决问题.

使用Groovy 2.4.5,如果我有Automate.groovy的脚本

println "Hello from Automate.groovy"
Run Code Online (Sandbox Code Playgroud)

并使用此manifest.txt:

Main-class: Automate
Class-path: jar/groovy-all-2.4.5.jar
Run Code Online (Sandbox Code Playgroud)

这个简单的构建脚本:

rm *.class
groovyc Automate.groovy
jar cvfm Automate.jar manifest.txt Automate.class
Run Code Online (Sandbox Code Playgroud)

并且,在运行目录中,我执行此操作:

bash$ mkdir jar
bash$ cp $GROOVY_HOME/embeddable/groovy-all-2.4.5.jar jar
Run Code Online (Sandbox Code Playgroud)

然后这工作:

bash$ java -jar Automate.jar 
Hello from Automate.groovy
Run Code Online (Sandbox Code Playgroud)

如果可嵌入的jar包含在Automate.jar本身中,解决方案会更好.使用Gradle的一个例子就是这个项目.