Có cách nào để nhập đối số khi khởi chạy ứng dụng khởi động mùa xuân (mvn spring-boot: run) từ dòng lệnh và sau đó lấy chúng trong main() không?Lấy đối số dòng lệnh từ khởi động mùa xuân: chạy
Trả lời
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"
Và nếu bạn đang sử dụng Eclipse ...
| Parameter Name | Value | | run.arguments | "--name=Adam" |
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.
tuyệt vời, điều này đã cứu tôi! –
Đâ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
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"]
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ử '
- 1. Thuộc tính dòng lệnh khởi động mùa xuân có sẵn khi sử dụng khởi động mùa xuân: chạy không?
- 2. mùa xuân - qua các đối số dòng lệnh
- 3. Khởi động mùa xuân CommandLineRunner: lọc đối số tùy chọn
- 4. Khởi động mùa xuân. Chạy các tập lệnh SQL và lấy dữ liệu khi khởi động ứng dụng
- 5. Khởi động mùa xuân + cassandra
- 6. Mùa xuân: ghi đè một ứng dụng.property từ dòng lệnh
- 7. Khởi chạy ColdFusion từ dòng lệnh
- 8. Taglib khởi động mùa xuân
- 9. Khởi động mùa xuân: Tải @Value từ tập tin YAML
- 10. Maven không chạy thử nghiệm Khởi động mùa xuân
- 11. plugin gradle khởi động mùa xuân
- 12. Khởi động mùa xuân Truy vấn động
- 13. Truy cập SessionFactory từ Ứng dụng Khởi động Mùa xuân
- 14. Tăng tốc thời gian khởi động Khởi động mùa xuân
- 15. Cách tự động lấy đối tượng Môi trường Mùa xuân
- 16. Khởi động mùa xuân + Groovy + logback.groovy
- 17. Khởi động mùa xuân yml Tệp ResourceBundle
- 18. Khởi động mùa xuân và FreeMarker
- 19. Bộ khởi động mùa xuân obfuscator
- 20. đối số dòng lệnh để docker chạy
- 21. Khởi động mùa xuân + Websocket (SockJS)
- 22. Giảm thiểu thời gian khởi động khởi động mùa xuân
- 23. khởi động mùa xuân application.properties bên ngoài
- 24. Xác định chính lớp mùa xuân-Boot dòng lệnh
- 25. Khởi chạy trình duyệt tự động sau khi webapp khởi động mùa xuân đã sẵn sàng
- 26. Khởi động mùa xuân OAuth2 - Không thể lấy chi tiết người dùng từ mã thông báo
- 27. Log4j.properties trong khởi động mùa xuân
- 28. Khởi động mùa xuân - @ConditionalOnProperty hoặc @ConditionalOnExpression
- 29. Ứng dụng khởi động mùa xuân
- 30. Lợi thế của khởi động mùa xuân
Tuyệt vời, cảm ơn bạn! – sandris
@sandris Không sao cả! – geoand
Cảm ơn. 1 cho câu trả lời của bạn. – sukrit007