有simple Eclipse plugin运行Gradle,它只是使用命令行方式启动gradle。
什么是maven编译和运行的gradle模拟
mvn compile exec:java -Dexec.mainClass=example.Example
这样可以运行gradle.build
的任何项目。
更新:之前有类似问题What is the gradle equivalent of maven's exec plugin for running Java apps?,但解决方案建议更改每个项目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
答案 0 :(得分:129)
您只需使用Gradle Application plugin:
apply plugin:'application'
mainClassName = "org.gradle.sample.Main"
然后只需gradle run
。
正如Teresa指出的那样,您还可以将mainClassName
配置为系统属性,并使用命令行参数运行。
答案 1 :(得分:121)
使用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
是在命令行动态传递的属性。 classpath
设置为接收最新的课程。
如果您未传入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任务。
答案 2 :(得分:17)
扩展First Zero的答案,我猜你想要一些你也可以运行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"
}
您可以在其中设置默认主类。
答案 3 :(得分:0)
您可以对其进行参数化并通过gradle clean build -Pprokey = goodbye
task choiceMyMainClass(type: JavaExec) {
group = "Execution"
description = "Run Option main class with JavaExecTask"
classpath = sourceSets.main.runtimeClasspath
if (project.hasProperty('prokey')){
if (prokey == 'hello'){
main = 'com.sam.home.HelloWorld'
}
else if (prokey == 'goodbye'){
main = 'com.sam.home.GoodBye'
}
} else {
println 'Invalid value is enterrd';
// println 'Invalid value is enterrd'+ project.prokey;
}