如何使用Gradle添加默认JVM参数

Jho*_*007 15 java jar jvm-arguments gradle build.gradle

我需要在使用Gradle构建时向我的jar添加默认JVM选项.从我得到的文档中我必须设置:

applicationDefaultJvmArgs = ["-Djavafx.embed.singleThread=true"]
Run Code Online (Sandbox Code Playgroud)

我没有太多使用Gradle的经验,编写build.gradle文件的开发人员写的不同于大多数网站提供的示例.

这是build.gradle:

apply plugin: 'java'
apply plugin: 'eclipse'

version = '0.1'

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.+'
    compile 'placeholder'
}

task release(type: Jar) {
    manifest {
        attributes("Implementation-Title": "placeholder",
                "Implementation-Version": version,
                'Main-Class': 'placeholder.Application')
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }

    with jar
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.2.1'
}
Run Code Online (Sandbox Code Playgroud)

我不知道在哪里提出论点.我尝试将它们放在不同的位置,但我总是得到:

A problem occurred evaluating root project 'placeholder'.
> No such property: applicationDefaultJvmArgs for class: org.gradle.api.tasks.bundling.Jar_Decorated
Run Code Online (Sandbox Code Playgroud)

非常感谢,Jhonny

por*_*nez 23

从头顶我可以想到两个选项:

选项1:做什么@Ethan说,它可能会起作用:

package placeholder;

//your imports

public class Application{
  static {
      System.getProperties().set("javafx.embed.singleThread", "true");  
  }
  // your code
  public static void main(String... args){
    //your code
  }
}
Run Code Online (Sandbox Code Playgroud)

选项2:使用应用程序插件+默认的jvm值

的build.gradle:

apply plugin: 'application'
//your code
applicationDefaultJvmArgs = ["-Djavafx.embed.singleThread=true"]
Run Code Online (Sandbox Code Playgroud)

现在您可以通过以下两种方式运行代码:

从gradle

$gradle run
Run Code Online (Sandbox Code Playgroud)

从分发(脚本).从应用程序插件将提供的生成脚本:

$gradle clean build distZip
Run Code Online (Sandbox Code Playgroud)

然后gradle将生成一个zip文件${your.projectdir}/build.找到zip然后解压缩它,/bin你会发现一个${yourproject}.bat${yourproject}可执行文件.一个用于Linux/mac/unix(${yourproject}),另一个用于windows(${yourproject.bat})

  • @portenez,我认为选项 3 适用于运行 gradle 的 JVM (3认同)