tutorial starter que proyecto primer mundo hola español con java maven spring-boot command-line-arguments

java - starter - Obtenga argumentos de línea de comandos desde spring-boot: ejecutar



spring boot tutorial (5)

Al mirar el código fuente del plugin spring-boot-maven, encontré que debes hacer:

mvn spring-boot:run -Drun.arguments="arg1,arg2"

Otra forma de obtener más información sobre las opciones que admite el objetivo de ejecución del complemento spring-boot es ejecutar el siguiente comando:

mvn help:describe -Dcmd=spring-boot:run -Ddetail

Para Spring Boot 2.x, la fuente está here y ahora necesita usar -Dspring-boot.run.arguments="args1,args2"

Si está utilizando Gradle y desea poder pasar argumentos de línea de comando a la tarea Grabar bootRun , primero debe configurar, por ejemplo, de esta manera:

bootRun { if ( project.hasProperty(''args'') ) { args project.args.split(''//s+'') } }

y ejecuta la tarea usando gradle bootRun -Pargs="arg1 arg2"

¿Hay alguna forma de ingresar argumentos al iniciar la aplicación de arranque de primavera (mvn spring-boot: run) desde la línea de comandos y luego obtenerlos en main ()?


Al pasar múltiples argumentos usando -Drun.arguments, si el argumento a su vez tiene valores "separados por comas", entonces solo se usa el primer valor de cada argumento. Para evitar esto, repita el argumento tantas veces como la cantidad de valores.

Esto es más de una solución. No estoy seguro de si hay una alternativa a menos que el delimitador sea diferente, como ''|''.

Ejemplo:

mvn spring-boot:run -Drun.arguments="--spring.profiles.active=test,dev"

Selecciona solo el perfil de "prueba" para el comando anterior.

Solución:

mvn spring-boot:run -Drun.arguments="--spring.profiles.active=test,--spring.profiles.active=dev"

Selecciona los perfiles ''dev'' y ''prueba'' para el comando anterior.


Esto es lo que funcionó para mí ( spring-boot v1.4.3.RELEASE ) ,.

mvn spring-boot:run -Dspring.profiles.active=test,local -Dlogback-debug=true


Y si estás usando Eclipse ...

| Parameter Name | Value | | run.arguments | "--name=Adam" |


Tenga en cuenta: la forma de pasar argumentos depende de la versión principal de spring-boot .

TLDR

Para Spring Boot 1:

mvn spring-boot:run -Drun.arguments="argOne,argTwo"

Para Spring Boot 2:

mvn spring-boot:run -Dspring-boot.run.arguments="argOne,argTwo"

1) la versión spring-boot-maven-plugin y la versión Spring Boot que usa debe estar alineada.

De acuerdo con la versión principal de Spring Boot utilizada ( 1 o 2 ), el spring-boot-maven-plugin en la versión 1 o 2 debería utilizarse.
Si su pom.xml hereda de spring-boot-starter-parent :

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>ONE_OR_TWO_VERSION</version> </parent>

En tu pom, la versión del complemento utilizado ni siquiera debe especificarse, ya que esta dependencia del complemento se hereda:

<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> ... </configuration> </plugin> </plugins>

En el caso de que su pom.xml no herede de spring-boot-starter-parent , no olvide alinear la versión de spring-boot-maven-plugin con la versión exacta del spring boot que desea utilizar.

2) Pasar argumentos en línea de comando con spring-boot-maven-plugin: 1.XX

Por un argumento:

mvn spring-boot:run -Drun.arguments="argOne"

para múltiple:

mvn spring-boot:run -Drun.arguments="argOne,argTwo"

La página del complemento maven lo documenta:

Name Type Since Description arguments | String[] | 1.0 | Arguments that should be passed to the application. On command line use commas to separate multiple arguments. User property is: run.arguments.

3) Pasar argumentos en la línea de comando con spring-boot-maven-plugin: 2.XX

Por un argumento:

mvn spring-boot:run -Dspring-boot.run.arguments="argOne"

para múltiple:

mvn spring-boot:run -Dspring-boot.run.arguments="argOne,argTwo"

No encontré la documentación del complemento para la versión 2.XX que se refiere a eso.
Pero la clase org.springframework.boot.maven.AbstractRunMojo del org.springframework.boot.maven.AbstractRunMojo spring-boot-maven-plugin:2.0.0.M3 refiere a esta propiedad del usuario:

public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo ... @Parameter(property="spring-boot.run.arguments") private String[] arguments; ... protected RunArguments resolveApplicationArguments(){ RunArguments runArguments = new RunArguments(this.arguments); addActiveProfileArgument(runArguments); return runArguments; } ... }

4) Sugerencia: a medida que pasa más de un argumento, se consideran espacios en blanco entre comas.

mvn spring-boot:run -Dspring-boot.run.arguments="argOne,argTwo"

se interpretará como ["argOne", "argTwo"]

Pero esto :

mvn spring-boot:run -Dspring-boot.run.arguments="argOne, argTwo"

se interpretará como ["argOne", " argTwo"]