web-dev-qa-db-fra.com

Spring: remplacement d'un application.property à partir de la ligne de commande

J'ai un fichier application.properties avec les valeurs de variable par défaut. Je veux pouvoir changer l’UN d’eux en courant avec mvn spring-boot:run. J'ai trouvé comment changer le fichier entier, mais je veux seulement changer une ou deux de ces propriétés.

35
clueless user

Vous pouvez transmettre des propriétés individuelles sous forme d'arguments de ligne de commande. Par exemple, si vous voulez définir server.port, vous pouvez effectuer les opérations suivantes lors du lancement d’un fichier jar exécutable:

Java -jar your-app.jar --server.port=8081

Sinon, si vous utilisez mvn spring-boot:run:

mvn spring-boot:run -Drun.arguments="--server.port=8081"

Vous pouvez également configurer les arguments pour spring-boot:run dans votre application pom.xml afin qu’ils ne soient pas toujours spécifiés sur la ligne de commande:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <arguments>
            <argument>--server.port=8085</argument>
        </arguments>
    </configuration>
</plugin>
54
Andy Wilkinson

Pour mettre à jour de petites choses, le plugin Spring Boot 1.X Maven s’appuie sur le --Drun.arguments Propriété utilisateur Maven mais le plug-in Spring Boot 2.X Maven s’appuie sur le -Dspring-boot.run.arguments Propriété utilisateur Maven.

Donc pour le printemps 2, vous devez faire:

mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8081"

Et si vous devez passer plusieurs arguments, vous devez utiliser , comme séparateur et n’utilisez jamais d’espace entre les arguments:

mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8081,--foo=bar"

En ce qui concerne la configuration du plug-in maven et la manière de passer l'argument d'un gros jar, cela n'a pas changé.
La très bonne réponse de Andy Wilkinson a donc toujours raison.

0
davidxxx