有一个运行Gradle的simple Eclipse plugin,它只是使用命令行的方式来启动gradle。
什么是maven编译和运行mvn compile exec:java -Dexec.mainClass=example.Example
的gradle模拟
这样,任何使用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
发布于 2014-01-26 14:48:14
gradle中没有直接等同于mvn exec:java
的东西,你需要应用application
插件或者有一个JavaExec
任务。
application
插件
激活插件:
plugins {
id 'application'
...
}
按如下方式进行配置:
application {
mainClassName = project.hasProperty("mainClass") ? project.getProperty("mainClass") : "NULL"
}
在命令行上,编写
$ gradle -PmainClass=Boo run
JavaExec
任务
定义一个任务,比方说execute
task execute(type:JavaExec) {
main = project.hasProperty("mainClass") ? getProperty("mainClass") : "NULL"
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'.
发布于 2014-01-26 09:41:21
您只需要使用Gradle Application plugin
apply plugin:'application'
mainClassName = "org.gradle.sample.Main"
然后简单地使用gradle run
。
正如Teresa指出的那样,您还可以将mainClassName
配置为系统属性,并使用命令行参数运行。
发布于 2017-02-16 04:37:43
扩展第一个零的答案,我猜你想要的东西,你也可以运行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"
}
在那里设置默认的主类。
https://stackoverflow.com/questions/21358466
复制相似问题