从命令行运行Spring Batch作业

TPP*_*PPZ 7 spring maven-plugin maven spring-batch

我不知道如何调用Spring Batch中定义的Job CommandLineJobRunner,文档详细信息对我来说还不够.

我遵循Spring Batch官方指南,使用Java注释在Spring Batch中编写Jobs,例如@EnableBatchProcessing因为我想避免使用XML配置文件来描述作业,步骤等.

到目前为止,我有:

  • 配置类(com.package.bla.bla.ClassContainingTheBatchConfiguration见下文),我已经把所有定义的东西ItemReader,ItemProcessor,ItemWriter,Job,和Step(与return jobs.get("nameOfTheJob")使用见下文)@Beanannotaion.
  • 一个main带有SpringApplication.run(...)and和annotation 方法的类,用于@ImportResource("classpath:META-INF/spring/applicationContext.xml")在处理Job中的数据时导入一些我需要的bean.

在Maven方面,我目前正在使用一些插件:

  • maven-jar-plugin指定<addClasspath>true</addClasspath>和包含标记中main方法的类<mainClass>
  • maven-assembly-plugin因为我想要一个jar包含依赖项中所有内容的唯一可执行文件,我正在使用<phase>package</package>能够在package阶段中构建jar ,我也正在使用<goal>single</goal>它来正确构建jarassembly
  • 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
Run Code Online (Sandbox Code Playgroud)

IOException因为java.io.FileNotFoundException关于投掷com.package.bla.bla.ClassContainingTheBatchConfiguration.我应该如何在命令行中指定参数以便执行作业?

Dav*_*yer 2

如果您已经在使用SpringApplicationSpring Boot,为什么不完成这项工作@EnableAutoConfiguration并使用 Maven 插件(例如,请参阅本指南)?这样你就可以很快地让一些东西运行起来,并且你以后可以随时添加你自己的功能。