我不知道如何使用 CommandLineJobRunner
调用 Spring Batch 中定义的作业,文档细节对我来说还不够。
我关注了 Spring Batch official guide使用 Java 注释在 Spring Batch 中编写作业,例如@EnableBatchProcessing
因为我想避免使用 XML 配置文件来描述工作、步骤等。
到目前为止,我有:
com.package.bla.bla.ClassContainingTheBatchConfiguration
见下文),我已经把所有定义 ItemReader
的东西都放在这里了, ItemProcessor
, ItemWriter
, Job
, 和 Step
(与 return jobs.get("nameOfTheJob")
见下文)使用 @Bean
注释。 main
的类方法与 SpringApplication.run(...)
和和注释 @ImportResource("classpath:META-INF/spring/applicationContext.xml")
在处理作业中的数据时导入一些我需要的 bean。 在 Maven 方面,我目前正在使用一些插件:
maven-jar-plugin
指定 <addClasspath>true</addClasspath>
以及标签中包含 main 方法的类 <mainClass>
maven-assembly-plugin
因为我想要一个独特的可执行文件 jar
包含依赖项中的所有内容,我正在使用 <phase>package</package>
能够在 package
中构建 jar 阶段,我也在用<goal>single</goal>
能够使用 assembly
正确构建 jar maven-compiler-plugin
指定我使用的是 Java 1.7 我想我已经配置了所有需要配置的东西,但是在拥有 Maven 之后
BUILD SUCCESS
我无法从命令行运行作业:
java -cp ./target/JAR_FILE_NAME.jar org.springframework.batch.core.launch.support.CommandLineJobRunner com.package.bla.bla.ClassContainingTheBatchConfiguration nameOfTheJob
正在抛
IOException
由于
java.io.FileNotFoundException
关于
com.package.bla.bla.ClassContainingTheBatchConfiguration
.我应该如何在命令行中指定参数才能执行作业?
请您参考如下方法:
如果您已经在使用 SpringApplication
从 Spring Boot 开始,为什么不完成工作并使用 @EnableAutoConfiguration
以及 Maven 插件(参见例如 this guide )?这样你就可以很快地得到一些东西,而且你以后可以随时添加自己的功能。