Obtenez des arguments de ligne de commande à partir du printemps-boot:run
Est-il un moyen d'arguments d'entrée lors du lancement de printemps-démarrage de l'application (mvn printemps-boot:exécuter) à partir de la ligne de commande, puis les mettre dans main()?
Vous devez vous connecter pour publier un commentaire.
À la recherche à la le code source de la spring-boot-maven-plugin j'ai trouvé que vous devez faire:
Une autre façon d'obtenir plus d'informations sur les options de la
run
objectif de laspring-boot
plugin prend en charge est d'exécuter la commande suivante:Pour Le Printemps De Démarrage 2.x, la source est ici et vous devez maintenant utiliser
-Dspring-boot.run.arguments="args1,args2"
Si vous utilisez Gradle et vous voulez être en mesure de passer des arguments de ligne de commande pour le Gradle
bootRun
tâche, vous devez d'abord configurer, par exemple comme ceci:et exécuter la tâche à l'aide de
gradle bootRun -Pargs="arg1 arg2"
bootRun { // Usage: gradle bootRun -Pargs="arg1 arg2" if ( project.hasProperty('args') ) { args = (project.args.split("\\s+") as List) } }
-Dspring-boot.run.arguments=
Lors du passage de plusieurs arguments à l'aide de -Drun.arguments, si l'argument a 'séparées par des virgules, les valeurs, seule la première valeur de chaque argument est utilisé. Pour éviter cela, suivez l'argument autant de fois que le nombre de valeurs.
C'est plus une solution de contournement. Vous ne savez pas si il existe une alternative, sauf si le délimiteur est différent - comme '|'.
E. g Question:
Choisit seulement "test" profil de la commande ci-dessus.
Solution de contournement:
Choisit à la fois de " dev "& "test" pour les profils de la commande ci-dessus.
-Dspring-boot.run.arguments=
Être conscient : La voie de passage d'arguments dépend de la
spring-boot
version majeure.TLDR
Pour Le Printemps De Démarrage 1 :
Pour Le Printemps Boot 2 :
1)
spring-boot-maven-plugin
de la version et de laSpring Boot
version que vous utilisez doit être alignée.Selon le Ressort de Démarrage majeures de la version utilisée (
1
ou2
), lespring-boot-maven-plugin
dans le1
ou la2
version devrait en effet être utilisé.Si votre
pom.xml
hérite de laspring-boot-starter-parent
:Dans votre pom, la version du plugin utilisé ne devrait même pas être spécifié comme ce plugin dépendance est hérité de :
Dans le cas de votre
pom.xml
pas hériter despring-boot-starter-parent
, n'oubliez pas d'aligner la version despring-boot-maven-plugin
avec la version exacte despring boot
vous souhaitez utiliser.2) le Passage d'arguments en ligne de commande avec spring-boot-maven-plugin:1.X.X
Pour un seul argument :
pour plusieurs :
La plugin maven page documents :
3) le Passage d'arguments en ligne de commande avec spring-boot-maven-plugin:2.X.X
Pour un seul argument :
pour plusieurs :
Je n'ai pas trouvé le plugin de la documentation pour les 2.X.X version qui renvoie à ce.
Mais le
org.springframework.boot.maven.AbstractRunMojo
classe de laspring-boot-maven-plugin:2.0.0.M3
plugin fait référence à cette propriété de l'utilisateur:4) Astuce : vous passez plus d'un argument, les espaces entre les virgules sont pris en compte.
sera interprété comme
["argOne", "argTwo"]
Mais c' :
sera interprété comme
["argOne", " argTwo"]
configuration
section du plugin? J'ai essayé<arguments><argument>-Dprop=value</argument></arguments>
mais il ne capte pas la valeur de la propriété de cette façon.<arguments><argument>--prop=value</argument></arguments>
Printemps de Démarrage 1 2 fournir un moyen de passer plusieurs profils comme argument et d'éviter le problème lié à la virgule comme séparateur entre les arguments et les valeurs passées en tant que profil actif.
Donc au lieu d'écrire :
utilisation le Printemps de Démarrage Maven
profils
de la propriété qui est une commodité de raccourci despring.profiles.active
tels que les suivants :Le Maven propriété de l'utilisateur est différent en fonction de Printemps version de Démarrage.
Pour le Printemps de Démarrage 1.4+, c'est-à
run.profiles
:Pour le Printemps Boot 2, c'est-à
spring-boot.run.profiles
:À partir du plugin documentation :
Et si vous utilisez Eclipse...
C'est ce qui a fonctionné pour moi (
spring-boot v1.4.3.RELEASE
),.Pour la dernière version de printemps de l'utilisation -Dspring-boot.exécuter.arguments= comme illustré dans l'exemple ci-dessous