【问题标题】:Java Spring Boot plus Spring Batch create Jar and run specific job onlyJava Spring Boot 加 Spring Batch 创建 Jar 并仅运行特定作业
【发布时间】:2020-09-24 23:34:33
【问题描述】:

我正在尝试使用带有 Spring Batch 应用程序的 Spring Boot,它会有多个作业。

当我尝试构建 jar(假设只有一个作业)时,它仍然会启动应用程序并实际运行可用的作业。

mvn clean package

我只是想在这里构建一个 Jar,不想实际运行任何 Job。

稍后,一旦 Jar 可用,我可以传递一些参数来运行特定的 Job。目前我的代码中只有一项工作,以后会有更多工作。但我连一份工作都做不了。

这是我迄今为止根据所有在线建议尝试的方法。

BatchConfiguration.java

@Configuration
@EnableBatchProcessing
public class BatchConfiguration {

    private static final Logger logger = LoggerFactory.getLogger(BatchConfiguration.class);

    @Autowired
    public JobBuilderFactory jobBuilderFactory;

    @Autowired
    public StepBuilderFactory stepBuilderFactory;

    @Autowired
    public FileDTO fileDTO;


    @Bean
    public Job fetchJob(Step step) {
        return jobBuilderFactory
                .get("My Job")
                .incrementer(new RunIdIncrementer())
                .flow(step)
                .end()
                .build();
    }

    @Bean
    public Step getData() {
        return stepBuilderFactory
                .get("get data")
                .<FileDTO, FileDTO>chunk(1)
                .reader(FileReader())
                .processor(new FileProcessor())
                .writer(new FileWriter())
                .build();
    }
}

application.properties

spring.datasource.url=jdbc:postgresql://dbhost:1000/db
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.platform=postgresql
spring.batch.job.names=

我试图在这里为 spring.batch.job.names 属性留空。

运行 mvn clean package,它帮助我在不运行作业的情况下编译和构建 jar。

现在,我正在尝试给出参数,

java -jar target\mytest-0.0.1-SNAPSHOT.jar --spring.batch.job.names=fetchJob

它根本不启动工作。

请注意,如果我从 application.properties 中删除属性 spring.batch.job.names 并按照步骤操作,mvn clean package => 将运行作业并创建 Jar。这是我不想要的。 稍后我将有更多作业,我不想在创建 Jar 时运行这些作业。

我在这里错过了什么?

【问题讨论】:

  • mvn clean package 不会运行您的工作,但任何带有 @SpringBootTest 注释的 Junit 测试都可以。尝试使用作业设置您的 application.properites 并运行:mvn clean package -DskipTests

标签: java spring-boot maven spring-batch


【解决方案1】:

我只是想在这里构建一个 Jar,不想实际运行任何 Job。

您需要为此设置属性spring.batch.job.enabled=false,而不是添加空属性spring.batch.job.names=

它根本不启动工作。

如果您删除空属性 spring.batch.job.names= 并使用以下命令运行您的作业:

java -jar target\mytest-0.0.1-SNAPSHOT.jar --spring.batch.job.names=fetchJob

那么它应该可以工作。

【讨论】:

    猜你喜欢
    • 2020-09-24
    • 2017-05-12
    • 2017-04-20
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 2020-09-20
    • 2012-05-11
    相关资源
    最近更新 更多