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所指出的那样,您还可以将mainClassNameconfiguration为系统属性,并使用命令行参数运行。

在第一个零的答案扩展,我猜你想要的东西,你也可以运行gradle build没有错误。

gradle buildgradle -PmainClass=foo runApp使用这个:

 task runApp(type:JavaExec) { classpath = sourceSets.main.runtimeClasspath main = project.hasProperty("mainClass") ? project.getProperty("mainClass") : "package.MyDefaultMain" } 

你在哪里设置你的默认主类。