gpt4 book ai didi

java - Gradle 执行 Java 类(无需修改 build.gradle)

转载 作者:IT老高 更新时间:2023-10-28 11:21:21 25 4
gpt4 key购买 nike

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

最佳答案

gradle 中没有直接等价于 mvn exec:java,你需要应用 application 插件或有一个 JavaExec 任务.

应用程序插件

激活插件:

plugins {
id 'application'
...
}

配置如下:

application {
mainClassName = project.hasProperty("mainClass") ? project.getProperty("mainClass") : "NULL"
}

在命令行,写

$ gradle -PmainClass=Boo run

JavaExec 任务

定义一个任务,比如说执行:

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

关于java - Gradle 执行 Java 类(无需修改 build.gradle),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21358466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com