Gradle执行Java类(不修改build.gradle)
有一个简单的Eclipse插件来运行Gradle,它只是使用命令行方式来启动gradle。
什么是graven模拟maven编译和运行mvn compile exec:java -Dexec.mainClass=example.Example
这样任何具有gradle.build
项目都可以运行。
更新:有类似的问题什么是运行Java应用程序的Maven的exec插件gradle等价物? 问之前,但解决schemebuild议改变每个项目build.gradle
package runclass; public class RunClass { public static void main(String[] args) { System.out.println("app is running!"); } }
然后执行gradle run -DmainClass=runclass.RunClass
:run FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':run'. > No main class specified
使用JavaExec
。 作为一个例子把以下内容放在build.gradle
task execute(type:JavaExec) { main = mainClass classpath = sourceSets.main.runtimeClasspath }
运行gradle -PmainClass=Boo execute
。 你得到
$ gradle -PmainClass=Boo execute :compileJava :compileGroovy UP-TO-DATE :processResources UP-TO-DATE :classes :execute I am BOO!
mainClass
是通过命令行dynamic传递的属性。 classpath
被设置为拾取最新的类。
如果您不传递mainClass
属性, mainClass
预期方式失败。
$ gradle execute FAILURE: Build failed with an exception. * Where: Build file 'xxxx/build.gradle' line: 4 * What went wrong: A problem occurred evaluating root project 'Foo'. > Could not find property 'mainClass' on task ':execute'.
从评论更新:
在gradle中没有mvn exec:java
等价物,您需要应用应用程序插件或者有一个JavaExec任务。
你只需要使用Gradle Application插件 :
apply plugin:'application' mainClassName = "org.gradle.sample.Main"
然后简单地gradle run
。
正如Teresa所指出的那样,您还可以将mainClassName
configuration为系统属性,并使用命令行参数运行。
在第一个零的答案扩展,我猜你想要的东西,你也可以运行gradle build
没有错误。
gradle build
和gradle -PmainClass=foo runApp
使用这个:
task runApp(type:JavaExec) { classpath = sourceSets.main.runtimeClasspath main = project.hasProperty("mainClass") ? project.getProperty("mainClass") : "package.MyDefaultMain" }
你在哪里设置你的默认主类。