By default SBAL uses the DefaultVersionProvider class to find the current batch version. This class expects its version attribute to be set from the spring configuration file:
<bean id="version" class="net.sf.spring.batch.impl.DefaultVersionProvider"> <property name="version"> <value>1.0.0</value> </property> </bean>
But you can provide your own version provider by implementing the net.sf.spring.batch.VersionProvider interface, and declare your class as the bean with the version id.
If you want to have the '-v' option to display the implementation version from the manifest of a jar, you can do:
import net.sf.spring.batch.VersionProvider; public class ClassBasedVersionProvider implements VersionProvider { protected String className; public String findVersion() { if(className==null) return "unknown"; try { return Class.forName(className).getPackage().getImplementationVersion(); } catch (ClassNotFoundException e) { return "unknown"; } } /** * @param className the className to set */ public void setClassName(String className) { this.className = className; } }
and declare in context file:
<bean id="version" class="net.sf.spring.batch.impl.ClassBasedVersionProvider"> <property name="className"> <value>com.mycompany.mybatch</value> </property> </bean>