繁体   English   中英

如何使用'java'命令从gradle执行jar中的主类

[英]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

要了解有关ExecJavaExec任务类型的更多信息,请参阅Gradle Build Language Reference

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM