web-dev-qa-db-fra.com

Comment ajouter des arguments JVM par défaut avec Gradle

Je dois ajouter des options JVM par défaut à mon fichier jar, lors de la compilation avec Gradle . D'après la documentation que j'ai obtenue, je dois définir:

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

Je n'ai pas beaucoup d'expérience avec Gradle et le développeur qui a écrit le fichier build.gradle l'a écrit différemment de ce que la plupart des sites Web donnent comme exemples.

Voici le 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'
}

Je ne sais pas où mettre les arguments. J'ai essayé de les mettre dans des endroits différents, mais j'ai toujours:

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

Merci beaucoup, Jhonny

12
Jhonny007

En tête, je peux penser à 2 options:

Option1: Faites ce que @Ethan a dit, cela fonctionnera probablement:

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: Utiliser le plugin d'application + les valeurs jvm par défaut

build.gradle: 

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

Maintenant, vous pouvez exécuter votre code de 2 manières:

De grade

$gradle run

De la distribution (script). à partir du script généré que le plug-in d'application fournira:

$gradle clean build distZip

Ensuite, gradle générera un fichier Zip quelque part sous ${your.projectdir}/build. Recherchez le fichier Zip, puis décompressez-le et sous /bin vous trouverez les exécutables ${yourproject}.bat et ${yourproject}. L'un est pour Linux/mac/unix (${yourproject}) l'autre est pour Windows (${yourproject.bat})

18
portenez

applicationDefaultJvmArgs est fourni par le plugin Application . Donc, si vous appliquez ce plugin, l'erreur disparaîtra probablement et vous devriez pouvoir exécuter le programme en émettant gradle run une fois que vous avez défini la propriété mainClassName sur le nom de classe complet, la méthode principale à invoquer.

1
KKishore

vous pouvez utiliser la ligne de commande avec la tâche 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) {
}

puis exécutez la tâche avec des options

gradle run --with-debug 

1
jiahut