Les arguments Java à exécuter avec gradle run peuvent être spécifiés avec --args (depuis Gradle 4.9)

Aperçu

--Les arguments de ligne de commande pour les applications Java exécutées avec gradle run peuvent être spécifiés avec --args (disponible depuis la migration Gradle 4.9) --Par exemple, en spécifiant gradle run --args = "aaa bbb ccc", vous pouvez définir le paramètre du tableau de chaînes dans la méthode principale de la classe principale Java.

Exemple de description

Un exemple de spécification de trois arguments pour aaa bbb ccc.

$ gradle run --args="aaa bbb ccc"

Information officielle

The Application Plugin

Since Gradle 4.9, the command line arguments can be passed with --args. For example, if you want to launch the application with command line arguments foo --bar, you can use gradle run --args="foo --bar" (see JavaExec.setArgsString(java.lang.String).

Contrôle de fonctionnement

Confirmé pour fonctionner avec OpenJDK 11.0.2 et Gradle 5.6.2.

Préparez build.gradle et App.java pour l'exécution.

$ tree
.
├── build.gradle
└── src
    └── main
        └── java
            └── com
                └── example
                    └── App.java

fichier build.gradle.

build.gradle


plugins {
  id 'java'
  id 'application'
}

repositories {
  mavenCentral()
  jcenter()
}

application {
  mainClassName = 'com.example.App'
}

Fichier App.java.

package com.example;

public class App {
  public static void main(String[] args) {
    System.out.println("args.length=" + args.length);
    for(String arg: args) {
      System.out.println(arg);
    }
  }
}

Exécutez gradle run sans arguments.

$ gradle run

> Task :run
args.length=0

BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed

Exécutez gradle run avec des arguments.

$ gradle run --args="aaa bbb ccc"

> Task :run
args.length=3
aaa
bbb
ccc

BUILD SUCCESSFUL in 1s
2 actionable tasks: 1 executed, 1 up-to-date

Solutions de contournement antérieures à Gradle 4.9

Ajoutez le processus lorsque la tâche d'exécution est exécutée dans build.gradle.

build.gradle


run {
  //Passez la propriété args aux args de la tâche d'exécution si elle existe
  if (project.hasProperty('args')) {
    //Divisez et passez avec des caractères vierges demi-largeur
    args(project.args.split('\\s+'))
  }
}

Si vous spécifiez la propriété args lors de l'exécution de gradle run, elle est transmise en tant qu'argument à l'application Java.

$ gradle run -Pargs="aaa bbb ccc"

> Task :run
args.length=3
aaa
bbb
ccc

BUILD SUCCESSFUL in 1s
2 actionable tasks: 1 executed, 1 up-to-date

Matériel de référence

Recommended Posts

Les arguments Java à exécuter avec gradle run peuvent être spécifiés avec --args (depuis Gradle 4.9)
En utilisant Gradle avec VSCode, compilez Java → exécutez
[Java] le type char peut être converti en type int
Seul le flux de niveau supérieur peut être parallélisé avec Java Stream.
Assurez-vous de comparer le résultat Java compareTo avec 0
Si les options peuvent être utilisées en raison des différentes versions de Java
Exécuter un lot avec docker-compose avec Java batch
Java pour jouer avec Function
Connectez-vous à DB avec Java
Connectez-vous à MySQL 8 avec Java
Exécuter Java VM avec Web Assembly
Construire un projet Java avec Gradle
Java pour apprendre avec les ramen [Partie 1]
Comment exécuter Ant dans Gradle
Osez défier Kaggle avec Java (1)
J'ai essayé d'interagir avec Java
Java sera impliqué dès aujourd'hui
Java, des tableaux pour débuter avec les débutants
Exécuter des applications écrites en Java8 en Java6
[Java] On a dit que Java pouvait concaténer des chaînes avec +, alors j'ai vérifié