【发布时间】:2014-02-24 16:47:37
【问题描述】:
我不知道如何使用 CommandLineJobRunner 调用 Spring Batch 中定义的 Job,文档详细信息对我来说还不够。
我已经按照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>和标签<mainClass>中包含main 方法的类 -
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
由于java.io.FileNotFoundException 与com.package.bla.bla.ClassContainingTheBatchConfiguration 相关,正在抛出IOException。我应该如何在命令行中指定参数以执行作业?
【问题讨论】:
-
文档的“细节”很荒谬。我很难想象仅基于文档来运行现有的工作。我只是想知道创造这份工作的人的学习曲线是什么......
标签: spring maven maven-plugin spring-batch