从需要从自定义参数注入的 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")
。
参考文献:
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 - 出羽和之
的回答。
我正在制作一个应用程序,它需要使用 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")
。
参考文献:
By default,
SpringApplication
converts any command line option arguments (that is, arguments starting with--
, such as--server.port=9000
) to aproperty
and adds them to the SpringEnvironment
.
由于 spring 单元测试,命令 mvnw package
失败。我只需要使用 -Dmaven.test.skip=true
参数跳过单元测试。因此,完整的命令将是 mvnw package -Dmaven.test.skip=true
。至于jar创建后如何运行带参数的.jar,可以看DEWA Kazuyuki - 出羽和之
的回答。