Project: springxd
Issue XD-3209: ClasspathEnvironmentProvider should support packaged Spring XD modules
Custom Spring XD modules are packaged into a JAR file with 3rd party libraries packaged into {{lib}} folder. Let's say we have a {{my-job}} custom job module, packaged as JAR and deployed with {{module upload}} shell command. It wants to use {{org.springframework.xd.sqoop.SqoopTasklet}} provided by {{spring-xd-extension-sqoop}} library. Unfortunately {{org.springframework.batch.step.tasklet.x.ClasspathEnvironmentProvider}} will only add {{my-job.jar}} to {{SqoopRunner}} classpath (code in {{ClasspathEnvironmentProvider#createClassPath()}} method). {{ClasspathEnvironmentProvider}} should add all 3rd party JARs packaged in custom job module to classpath. This works with {{sqoop}} module shipped with Spring XD because it's deployed as "exploded" module under $XD_HOME/modules/job. In such case {{ClasspathEnvironmentProvider}} correctly adds all JARs from $XD_HOME/modules/job/sqoop/lib to classpath.
Story points: 1