it-swarm.com.de

Wie füge ich Standard-JVM-Argumente mit Gradle hinzu?

Ich muss meinem Jar Standard-JVM-Optionen hinzufügen, wenn ich mit Gradle .. __ baue.

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

Ich habe nicht viel Erfahrung mit Gradle und dem Entwickler, der die build.gradle -Datei geschrieben hat, anders als die meisten Websites.

Hier ist das 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'
}

Ich weiß nicht, wo ich die Argumente einbringen soll. Ich habe versucht, sie an verschiedenen Orten zu platzieren, bekomme aber immer:

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

Vielen Dank. Jhonny

12
Jhonny007

Von meinem Kopf aus können mir zwei Möglichkeiten einfallen:

Option1: Tun Sie, was @Ethan gesagt hat, es wird wahrscheinlich funktionieren:

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
  }
}

Option 2: Verwenden Sie das Anwendungs-Plugin + Standard-Jvm-Werte

build.gradle: 

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

Jetzt können Sie Ihren Code auf zwei Arten ausführen:

Von gradle

$gradle run

Aus der Verteilung (Skript). aus dem generierten Skript, das das Anwendungs-Plugin bereitstellt:

$gradle clean build distZip

Gradle erzeugt dann eine ZIP-Datei irgendwo unter ${your.projectdir}/build. Suchen Sie die Zip-Datei und entpacken Sie sie. Unter /bin finden Sie die ausführbaren Dateien ${yourproject}.bat und ${yourproject}. Eines ist für Linux/Mac/Unix (${yourproject}), das andere für Windows (${yourproject.bat}).

18
portenez

applicationDefaultJvmArgs wird vom Application plugin bereitgestellt. Wenn Sie also dieses Plugin anwenden, wird der Fehler wahrscheinlich behoben und Sie sollten das Programm ausführen können, indem Sie gradle run ausgeben, sobald Sie die Eigenschaft mainClassName auf den vollständig qualifizierten Klassennamen gesetzt haben, deren Hauptmethode Sie aufrufen möchten.

1
KKishore

sie können Befehlszeile mit Gradle-Task verwenden: 

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) {
}

führen Sie dann die Task mit Optionen aus

gradle run --with-debug 

1
jiahut