2014-04-26 20 views

Trả lời

79

Nhìn vào source code của lò xo-boot-maven-plugin Tôi thấy rằng bạn cần làm:

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

Một cách khác để có thêm thông tin về những tùy chọn mục tiêu run của các plugin spring-boot hỗ trợ là để thực hiện lệnh sau:

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

Nếu bạn đang sử dụng Gradle và bạn muốn để có thể vượt qua đối số dòng lệnh để các bootRun nhiệm vụ Gradle, trước tiên bạn cần phải cấu hình, cho Ví dụ như sau:

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

và chạy các nhiệm vụ sử dụng gradle bootRun -Pargs="arg1 arg2"

+0

Tuyệt vời, cảm ơn bạn! – sandris

+0

@sandris Không sao cả! – geoand

+0

Cảm ơn. 1 cho câu trả lời của bạn. – sukrit007

1

Và nếu bạn đang sử dụng Eclipse ...

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

Khi đi qua nhiều đối số sử dụng -Drun.arguments, nếu đối số lần lượt có các giá trị 'phân cách bằng dấu phẩy', thì chỉ giá trị đầu tiên của mỗi đối số được sử dụng. Để tránh điều này lặp lại đối số nhiều lần số lượng giá trị.

Đây là giải pháp khác. Không chắc chắn nếu có một thay thế trừ khi dấu phân cách là khác nhau - như '|'.

ví dụ Vấn đề:

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

Chọn lựa tiêu biểu chỉ 'thử' hồ sơ cho lệnh trên.

Cách giải quyết:

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

Chọn lựa tiêu biểu cả 'dev' & 'test' cấu hình cho các lệnh trên.

+0

tuyệt vời, điều này đã cứu tôi! –

0

Đây là những gì phù hợp với tôi (spring-boot v1.4.3.RELEASE).

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

Lưu ý: Cách chuyển đối số tùy thuộc vào spring-boot phiên bản chính.

TLDR

Đối với mùa xuân Boot 1:

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

Đối với mùa xuân Boot 2:

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

1) spring-boot-maven-plugin phiên bản và phiên bản các Spring Boot bạn sử dụng ha s được căn chỉnh.

Theo phiên bản chính mùa xuân Boot sử dụng (1 hoặc 2), các spring-boot-maven-plugin trong 1 hoặc phiên bản 2 nên thực sự được sử dụng.
Nếu pom.xml kế thừa của bạn từ spring-boot-starter-parent:

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

Trong pom của bạn, phiên bản của các plugin sử dụng nên thậm chí không được quy định như phụ thuộc plugin này được thừa hưởng:

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

Trong trường hợp của bạn pom.xml không được kế thừa từ spring-boot-starter-parent, đừng quên căn chỉnh phiên bản spring-boot-maven-plugin với phiên bản chính xác của bạn muốn sử dụng.

2) lập luận Passing trong dòng lệnh với mùa xuân-boot-maven-plugin: 1.xx

Đối với một lập luận:

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

cho nhiều:

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

Tài liệu maven plugin page tài liệu:

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) lập luận Passing trong dòng lệnh với mùa xuân-boot-maven-plugin: 2.xx

Đối với một lập luận:

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

cho nhiều:

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

Tôi không tìm thấy tài liệu plugin cho phiên bản 2.XX đề cập đến điều đó.
Nhưng lớp org.springframework.boot.maven.AbstractRunMojo của các plugin spring-boot-maven-plugin:2.0.0.M3 đề cập đến tài sản của thành viên này:

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) Gợi ý: khi bạn vượt qua nhiều hơn một đối số, khoảng trắng giữa dấu phẩy được xem xét.

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

sẽ được hiểu là ["argOne", "argTwo"]

Nhưng điều này:

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

sẽ được hiểu là ["argOne", " argTwo"]

+0

Làm thế nào để bạn xác định các đối số bên trong phần cấu hình pom.xml 'của plugin? Tôi đã thử ' -Dprop = value' nhưng không nhận giá trị thuộc tính theo cách này. – user1902183

Các vấn đề liên quan