Gradle 执行 Java 类(不修改 build.gradle)

2022-08-31 08:31:51

一个简单的Eclipse插件来运行Gradle,它只是使用命令行方式来启动gradle。

什么是用于 maven 编译和运行的 gradle 模拟mvn compile exec:java -Dexec.mainClass=example.Example

这样,任何项目都可以运行。gradle.build

更新:之前问过类似的问题,maven用于运行Java应用程序的exec插件的gradle等效物是什么?但解决方案建议改变每个项目。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   

答案 1

没有直接等同于在gradle中,您需要应用插件或有一个任务。mvn exec:javaapplicationJavaExec

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'.

答案 2

您只需要使用Gradle应用程序插件

apply plugin:'application'
mainClass = "org.gradle.sample.Main"

然后简单地.gradle run

正如 Teresa 所指出的,您还可以配置为系统属性并使用命令行参数运行。mainClass


推荐