相关疑难解决方法(0)

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

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

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

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

更新:有类似的问题maven的exec插件运行Java应用程序的gradle等价物是什么?之前问过,但解决方案建议改变每个项目build.gradle

package runclass;

public class RunClass {
    public static void main(String[] args) {
        System.out.println("app is running!");
    }
}
Run Code Online (Sandbox Code Playgroud)

然后执行 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   
Run Code Online (Sandbox Code Playgroud)

java execution gradle

113
推荐指数
3
解决办法
11万
查看次数

通过Gradle运行Java类时传递系统属性和参数的问题

我试图通过Gradle运行命令行Java应用程序作为快速集成测试的一部分.我正在从Maven移植我的构建脚本,这很容易通过exec-maven-plugin.我的两大要求是:

  • 能够将系统属性传递给可执行Java代码
  • 能够将命令行参数传递给可执行Java代码

请注意,我不是试图在构建脚本中读取这些属性,我试图在脚本构建和执行的Java程序中读取它们.

我找到了另外两个SO帖子,它们通过Gradle处理Java程序执行:一个答案主张apply plugin: "application"在构建文件和gradle run命令行中使用,另一个答案提倡该方法以及task execute(type:JavaExec)在构建文件和构建文件gradle execute中使用命令行.我尝试了两种方法,但没有成功.

我有两个问题:

(1)我无法获取Java可执行文件来读取系统属性

我是否这样做:

build.gradle:

apply plugin: 'application'
mainClassName = "com.mycompany.MyMain"
Run Code Online (Sandbox Code Playgroud)

命令行:

gradle run -Dmyproperty=myvalue
Run Code Online (Sandbox Code Playgroud)

或这个:

build.gradle:

task execute (type:JavaExec) {
    main = "com.mycompany.MyMain"
    classpath = sourceSets.main.runtimeClasspath 
}
Run Code Online (Sandbox Code Playgroud)

命令行:

gradle execute -Dmyproperty=myvalue
Run Code Online (Sandbox Code Playgroud)

无论哪种情况,myproperty都无法完成.从开始运行的代码MyMain.main (...)myproperty系统属性读取为null/missing.

(2)我无法传递命令行参数

这可能与第一个问题有关.在exec-maven-plugin,例如,命令行参数本身也是经由系统属性传递英寸 这是Gradle的情况,还是有另一种传递命令行参数的方法?

我如何通过这些变量?另外,使用apply plugin: 'application'或更好task execute (type:JavaExec) …

java gradle

77
推荐指数
2
解决办法
6万
查看次数

标签 统计

gradle ×2

java ×2

execution ×1