Как добавить аргументы JVM по умолчанию с помощью Gradle

мне нужно добавить параметры JVM по умолчанию в мою банку при сборке с Gradle. Из документации я получил, что должен установить:

applicationDefaultJvmArgs = ["-Djavafx.embed.singleThread=true"]

у меня нет большого опыта работы с Gradle и разработчиком, который написал сборку.gradle файл написал его отличается от того, что большинство веб-сайтов дают в качестве примера.

вот сборка.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'
}

Я не знаю, куда девать аргументы. Я пытался разместить их в разных местах, но я всегда получить:

A problem occurred evaluating root project 'placeholder'.
> No such property: applicationDefaultJvmArgs for class: org.gradle.api.tasks.bundling.Jar_Decorated

Спасибо, Джонни!--4-->

3 ответов


С верхней части моей головы я могу думать о 2 вариантах:

Option1: сделайте то, что сказал @ 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
  }
}

Вариант 2: используйте плагин приложения + значения jvm по умолчанию

построить.Gradle в:

apply plugin: 'application'
//your code
applicationDefaultJvmArgs = ["-Djavafx.embed.singleThread=true"]

теперь вы можете запустить свой код 2 способами:

из gradle

$gradle run

из рассылки(сценарий). из сгенерированного скрипта, что плагин приложения будет обеспечить:

$gradle clean build distZip

затем gradle создаст zip-файл где-то под ${your.projectdir}/build. Найдите zip, затем распакуйте его и под /bin вы можете найти ${yourproject}.bat и ${yourproject} исполняемые файлы. Один для Linux / mac / unix (${yourproject}) другой для windows (${yourproject.bat})


applicationDefaultJvmArgs предоставляется Application плагин. Поэтому, если вы примените этот плагин, ошибка, вероятно, исчезнет, и вы сможете выполнить программу, выпустив gradle run после установки свойства mainClassName полное имя класса, основной метод которого требуется вызвать.


вы можете использовать командную строку с задачей gradle:

class AppRun extends JavaExec {
    private boolean withDebug

    @Option(option = "with-debug", description = "enable debug for the process. ")
    public void setDebugMode(boolean debug) {
        this.withDebug = debug
    }

    public boolean getDebugMode() {
        return this.withDebug
    }
}

task run(type: AppRun) {
}

затем запустите задачу с параметрами

gradle run --with-debug