Gradle运行Jar任务?

7

我正在尝试使用gradle运行我的Jar文件。

我已经想出了以下方法:

task runJar(dependsOn:[jar]){
  ant.java(jar:,fork:true)
}

然而,我找不到jar文件的路径。非常感谢任何帮助。谢谢! Misha 编辑:好吧,这很奇怪。这个任务在编译之前运行???编辑:已修复。关键在于 doLast { } 表示法,或者简写形式。
task runJar(dependsOn:"jar")<<{
  ant.java(jar:"${libsDir}${File.separator}${archivesBaseName}.jar",fork:true)
}

米莎

4个回答

9

Koppor的答案完美地解决了问题。

如果有一个Main.java在src/main/java中,我的build.gradle文件如下:

apply plugin: 'java'
apply plugin: 'application'

mainClassName = "Main"

运行它会得到以下结果:
gradle run                 

:compileJava
:processResources UP-TO-DATE
:classes
:run
[Main.java's output]

3
你是否在寻找应用插件?该插件会创建一个名为“run”的新任务,用于运行指定的Java类。

2

您应该能够使用jar.archivePath变量;

task runJar(dependsOn:[jar]){
  ant.java(jar: jar.archivePath ,fork:true)
}

我该如何在这里提供 args 参数? - IgorGanapolsky
1
http://stackoverflow.com/questions/10033853/how-to-pass-arguments-to-ant-java-method-in-groovy - TheKaptain

1

到目前为止,我最好的解决方案是:

task runJar(dependsOn:[jar]){
  ant.java(jar:"${libsDir}${File.separator}${archivesBaseName}.jar",fork:true)
}

谢谢!

Misha


1
你好!我尝试了你的解决方案,但是从jar包中没有输出 - 我只得到了一个Java结果:1的信息,尽管我在我的main方法中写入了System.out...我该如何获得输出? - emesx
我需要提供 args - IgorGanapolsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接