Quoting Robert Soesemann <[EMAIL PROTECTED]>: > I have my Ant pipeline running inside Eclipse. For some xslt tasks I > need to use the optional Saxon 8 XSLT 2.0 processor. > I add the path inside the xslt tasks via classpath and processor > parameter: > > E.g.: > > <xslt basedir="${dir}" > destdir="${split_dir}" > classpath="${lib_dir}\saxon8.jar" > processor="trax" > style="${xsl_dir}\split-document.xsl" > /> > > And it just works. > > But when i run the Ant build outside of Eclipse with another Ant (same > version) the build fails because the XSLT features get passed to a wrong > processor. > > What is the best way to tell Ant that it should use saxon8.jar? I don't > want to just copy the jar to the ant/lib. Is there a general <classpath> > task to add external jars to the Ant classpath? >
You will run into classloading issues if you try to use a nested <classpath> (I haven't even checked to see if this is supported by the XSLT task, probably not) because the <xslt> task is loaded in the parent classloader. It can't have a dependency on a library in a child classloader because in Java2 classloading, the parent can't see the child. The only way you do this is to remove the <xslt> task jar from ANT_HOME/lib and define the task using <taskdef> and provide a nested <classpath> there. Your best option, which will be compatible with all Ant-1.6+ environments, is to put the saxon jar in ANT_HOME/lib or user_home/.ant/lib. I suggest the latter because you can then blow away your Ant installations without having to worry about preserving custom jars you added to ANT_HOME/lib. Jake > Regards, > > Robert > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]