从需要从自定义参数注入的 Spring 启动控制台应用程序创建 Jar

Create a Jar From a Spring Boot Console App That Requires Injection From Custom Arguments

我正在制作一个应用程序,它需要使用 Spring 启动的命令行参数,然后传递的参数将被传递到一个字段,如下所示:

@Value("#{new java.text.SimpleDateFormat('dd-MM-yyyy').parse('${param.date}')}")
private Date date;

但是,当我尝试使用命令 mvnw package 创建 Jar 文件时,显示以下错误:

java.lang.IllegalArgumentException: Could not resolve placeholder 'param.date' in value "#{new java.text.SimpleDateFormat('dd-MM-yyyy').parse('${param.date}')}"

如何告诉编译器上述字段来自参数?而且,如果生成了 jar,当 运行 使用命令行参数生成 jar 时如何注入字段?

谢谢!

我无法复制它。试试这个:

java -jar [target].jar --param.date=01-11-2021

如果测试失败,请尝试 @SpringBootTest(args = "--param.date=01-11-2021")

(sample code)

参考文献:

By default, SpringApplication converts any command line option arguments (that is, arguments starting with --, such as --server.port=9000) to a property and adds them to the Spring Environment.

由于 spring 单元测试,命令 mvnw package 失败。我只需要使用 -Dmaven.test.skip=true 参数跳过单元测试。因此,完整的命令将是 mvnw package -Dmaven.test.skip=true。至于jar创建后如何运行带参数的.jar,可以看DEWA Kazuyuki - 出羽和之 的回答。