[英]How to execute a main class in a jar from gradle using the 'java' command
我在<project_root>
文件夹下有这些文件:
./build.gradle
./build/libs/vh-1.0-SNAPSHOT.jar
./libs/groovy-all-2.1.7.jar
./src/main/groovy/vh/Main.groovy
在build.gradle
文件中,我有这个任务:
task vh( type:Exec ) {
commandLine 'java -cp libs/groovy-all-2.1.7.jar:build/libs/' +
project.name + '-' + version + '.jar vh.Main'
}
Main.groovy
文件很简单:
package vh
class Main {
static void main( String[] args ) {
println 'Hello, World!'
}
}
插入字符串值后,命令行为:
java -cp libs/groovy-all-2.1.7.jar:build/libs/vh-1.0-SNAPSHOT.jar vh.Main
如果我直接从shell运行命令,我得到正确的输出。 但是,如果我运行gradle vh
,它将失败。 那么,我该如何使它工作? 非常感谢你。
Exec.commandLine
需要一个值列表 :可执行文件的一个值,以及每个参数的另一个值。 要执行Java代码,最好使用JavaExec
任务:
task vh(type: JavaExec) {
main = "vh.Main"
classpath = files("libs/groovy-all-2.1.7.jar", "build/libs/${project.name}-${version}.jar")
}
通常,您不必像这样对类路径进行硬编码。 例如,如果您正在使用groovy
插件,并且groovy-all
已经被声明为compile
依赖项(并且知道第二个Jar是从main
源创建的),您宁愿这样做:
classpath = sourceSets.main.runtimeClasspath
要了解有关Exec
和JavaExec
任务类型的更多信息,请参阅Gradle Build Language Reference 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.