2014-04-26 26 views

Odpowiedz

79

Patrząc na source code sprężyny-boot-maven-plugin I stwierdził, że trzeba zrobić:

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

Innym sposobem, aby uzyskać więcej informacji na temat jakie opcje run celem wtyczki spring-boot obsługuje jest aby wykonać następujące polecenie:

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

Jeśli używasz Gradle i chcesz, aby móc przekazywać argumenty wiersza polecenia do Gradle bootRun zadanie, trzeba najpierw skonfigurować, dla przykład tak:

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

i uruchomić zadanie przy użyciu gradle bootRun -Pargs="arg1 arg2"

+0

Świetnie, dziękuję! – sandris

+0

@sandris Bez problemu! – geoand

+0

Dzięki. +1 za odpowiedź. – sukrit007

1

a jeśli używasz Eclipse ...

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

Po przejściu wiele argumentów za pomocą -Drun.arguments, jeżeli Argument z kolei ma wartości "oddzielone przecinkami", a następnie używana jest tylko pierwsza wartość każdego argumentu. Aby tego uniknąć, powtarzaj ten argument tyle razy, ile liczba wartości.

Jest to bardziej obejście tego problemu. Nie wiem, czy istnieje alternatywa, chyba że separator jest inny - jak "|".

Np Problem:

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

wybory tylko 'test' profil dla powyższego polecenia.

Obejście:

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

Picks oba 'dev' & profile do powyższego polecenia 'test'.

+0

fantastycznie, to mnie uratowało! –

0

To właśnie dla mnie zadziałało (spring-boot v1.4.3.RELEASE).

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

Należy pamiętać: Sposób przekazywania argumentów zależy od wersji głównej spring-boot.

TLDR

na wiosnę Boot 1:

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

na wiosnę Boot 2:

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

1) spring-boot-maven-plugin wersji oraz wersji Spring Boot użyć ha s do wyrównania.

Według wersji głównej Wiosna startowy użyty (1 lub 2), powinny być rzeczywiście używany spring-boot-maven-plugin w 1 lub wersja 2.
Jeśli Twoje pom.xml dziedziczy z spring-boot-starter-parent:

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

W swojej pom wersja wtyczki używane nie powinno nawet być określony jako zależność ta wtyczka jest dziedziczona:

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

W przypadku listy pom.xml nie dziedzicząc z spring-boot-starter-parent, nie zapomnij wyrównać wersji spring-boot-maven-plugin z dokładną wersją , której chcesz użyć.

2) przekazując argumenty wiersza poleceń z wiosna-boot-maven-plugin: 1.xx

dla jednego argumentu:

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

za wiele:

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

The maven plugin page dokumentuje to:

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) argumenty przechodzącą w linii poleceń z wiosna-boot-maven-plugin: 2.xx

dla jednego argumentu:

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

za wiele:

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

Nie znalazłem dokumentacji wtyczki dla wersji 2.XX, która się do tego odnosi.
Ale klasa org.springframework.boot.maven.AbstractRunMojo wtyczki spring-boot-maven-plugin:2.0.0.M3 odnosi się do obiektu użytkownika:

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) wskazówka: jak przekazać więcej niż jeden argument, odstępy między przecinkami są uznawane.

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

będą interpretowane jako ["argOne", "argTwo"]

ale tym:

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

będą interpretowane jako ["argOne", " argTwo"]

+0

Jak określić argumenty w sekcji "konfiguracji" pom.xml wtyczki? Próbowałem ' -Dprop = wartość' ale nie zbiera wartości właściwości w ten sposób. – user1902183

Powiązane problemy