如何在CLI中使用Maven运行Spring批处理中的作业参数

fykwrbwg  于 2022-12-11  发布在  Maven
关注(0)|答案(4)|浏览(126)

我看过几个stackoverflow问题与解答,但在使用maven时,没有一个在CLI中有作业参数。
我的参数设置如下:

@Value("#{jobParameters.getOrDefault('startTimestamp', null)}") Long startTimestamp
@Value("#{jobParameters.getOrDefault('endTimestamp', null)}") Long endTimestamp

我的内行的命令是这样的:

mvn clean spring-boot:run -Dspring.batch.job.names=myJob -Dspring.profiles.active=default,dev -f pom.xml

我不确定要添加什么。以下内容不起作用:

-Dspring.batch.job.startTimestamp=1667790578000
-Dspring.batch.job.parameters.startTimestamp=1667790578000
w3nuxt5m

w3nuxt5m1#

如果要使用Maven传递作业参数,可以用途:
mvn spring-boot:run -Dspring-boot.run.arguments="param1=value1 param2=value2"
您可以在此处找到文档。

qij5mzcb

qij5mzcb2#

作业参数通过jobLauncher设置。例如:

JobParameters jobParameters = new JobParametersBuilder()
    .addLong("startTimestamp", 1667790578000L).toJobParameters();

JobExecution execution = jobLauncher.run(job, jobParameters);

如果要将参数作为属性发送,则需要使用@Value注解将自定义属性注入到启动作业的Bean中。

bfnvny8b

bfnvny8b3#

在命令行中,可以将作业参数作为键/值对进行传递:

java -jar myjob.jar name=foobar startTimestamp=1667790578000
njthzxwz

njthzxwz4#

我发现这是工作。

mvn clean spring-boot:run -Drun.arguments=startTimestamp=1667790578000,endTimestamp=1667790578000 -Dspring.batch.job.names=myJob -Dspring.profiles.active=default,dev -f pom.xml

发现堆栈溢出:Get command-line arguments from spring-boot:run

相关问题