java - Gradle JavaExec 任务,如何使用 allJvmArgs 属性

标签 java groovy gradle

根据 Java 执行 allJvmArgs属性 javadoc,allJvmArgs 是

List<String> allJvmArgs

The full set of arguments to use to launch the JVM for the process. This includes arguments to define system properties, the minimum/maximum heap size, and the bootstrap classpath.

我尝试使用此属性失败。以下是我的尝试。

示例 Java 代码。 //src/main/java/com/examples

package com.examples;

public class AllJvmArgumentsInJavaExecBug {

    public static void main(String[] args) {
        System.out.println("Hello From Java");
    }

}


// File: build.gradle
apply plugin: 'java'

task(runJavaExecNormal, dependsOn: 'classes', type: JavaExec) {
    main = 'com.examples.AllJvmArgumentsInJavaExecBug'
    classpath = sourceSets.main.runtimeClasspath

}


task(runJavaExecArgumentSetExample1, dependsOn: 'classes', type: JavaExec) {
    main = 'com.examples.AllJvmArgumentsInJavaExecBug'
    classpath = sourceSets.main.runtimeClasspath
    allJvmArgs = [ '-Xms10240m', '-Xmx20280m']

}

task(runJavaExecArgumentSetExample2, dependsOn: 'classes', type: JavaExec) {
    main = 'com.examples.AllJvmArgumentsInJavaExecBug'
    classpath = sourceSets.main.runtimeClasspath

    List<String> argumentList = new ArrayList<String>();
    argumentList.add('-Xms10240m')
    argumentList.add('-Xmx20280m')
    allJvmArgs = argumentList
}

我收到以下错误。

P:\github\gradleJavaExecAllJvmArgs>gradle

FAILURE: Build failed with an exception.

* Where:
Build file 'P:\github\gradleJavaExecAllJvmArgs\build.gradle' line: 14

* What went wrong:
A problem occurred evaluating root project 'gradleJavaExecAllJvmArgs'.
> java.lang.UnsupportedOperationException (no error message)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 3.733 secs

我无法使用此属性。 我可以按照 question 中的指示使用 maxHeapSize = "2g". 我想用它来设置最小堆大小。

以下是github project重现了这种情况。

最佳答案

org.gradle.process.internal.JavaExecHandleBuilder 的源代码包含:

public void setAllJvmArgs(Iterable<?> arguments) {
   throw new UnsupportedOperationException();
}

您应该能够使用 jvmArgs 而不是 allJvmArgs

关于java - Gradle JavaExec 任务,如何使用 allJvmArgs 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26525690/

相关文章:

java - Spring Boot ,gradle,angularJS和一个 fat jar

spring-boot - 如何使用 Spring 启动的JarLauncher的自定义子类?

testing - 最新的 Groovy 稳定版本令人费解的问题

java - Maven Eclipse 插件错误?无法自动添加工作区依赖 JAR 到运行配置模块路径

Java 11 : Strange behaviour with Object. equals() 方法

gradle - 制作 Gradle groovy jar 库后,如何使其可重用于多个本地项目?

json - 在 Spring Cloud Contract Groovy 合约中使用复杂的 JSON

java - 仅具有主类的简单应用程序看不到 logback.xml

java - 这个日期时间格式是什么?如何将其转换为人类可读的输出?为什么它返回这个输出?

grails - 我尝试使用 grails 和 groovy 根据标准从 postgreySQL 获取数据,但是在访问列表外键 ID 时我遇到了问题