defining the classpath for an ANT task in an ANT build file
Having trouble installing Oxygen? Got a bug to report? Post it all here.
-
- Posts: 65
- Joined: Fri Jan 18, 2008 5:54 pm
defining the classpath for an ANT task in an ANT build file
Post by Ron Van den Branden »
Hi,
I am maintaining a framework that defines an ANT transformation task that (among others) executes a FOP transformation. After an Oxygen update, I noticed the included FOP distribution had been updated, so I had to update the jar file references.
In order to improve future compatibility, I tried to generalize those jar file references by replacing the version numbers with asterisks. In Oxygen-18.1 it works perfectly if I pass following jars in the "libraries" section of the ANT scenario configuration:
Yet, the wildcard expansion for those "extension URLs" seems to be a recent feature introduced with Oxygen-18. In earlier versions this won't work, and hence this approach introduces a backward compatibility issue I would like to solve.
Therefore, I've tried by removing the wildcard-URLs from the "extensionURLs" section, and instead define them in the FOP task definition in the ANT build file that's being called:
If I initialize the ANT scenario while passing ${oxygenInstallDir} for the ANT script's ${oxygen.home} property, that seems to work partially, but still failing with following error:
I have the feeling I'm really close to a future and backward compatible solution... Am I still missing anything in the classpath definition for this FOP task?
Kind regards,
Ron
I am maintaining a framework that defines an ANT transformation task that (among others) executes a FOP transformation. After an Oxygen update, I noticed the included FOP distribution had been updated, so I had to update the jar file references.
In order to improve future compatibility, I tried to generalize those jar file references by replacing the version numbers with asterisks. In Oxygen-18.1 it works perfectly if I pass following jars in the "libraries" section of the ANT scenario configuration:
Code: Select all
<field name="extensionURLs">
<String-array>
<String>${oxygenHome}/classes/</String>
<String>${oxygenHome}/lib/oxygen.jar</String>
<String>${oxygenHome}/lib/oxygenAuthor.jar</String>
<String>${oxygenHome}/lib/oxygenDeveloper.jar</String>
<String>${oxygenHome}/lib/oxygenEclipse.jar</String>
<String>${oxygenHome}/lib/oxygenAuthorEclipse.jar</String>
<String>${oxygenHome}/lib/oxygenDeveloperEclipse.jar</String>
<String>${oxygenHome}/lib/resolver.jar</String>
<String>${oxygenHome}/lib/xercesImpl.jar</String>
<String>${oxygenHome}/lib/saxon9ee.jar</String>
<String>${oxygenHome}/lib/saxon.jar</String>
<String>${oxygenHome}/lib/xml-apis-ext.jar</String>
<String>${oxygenHome}/lib/log4j.jar</String>
<String>${oxygenHome}/lib/fop.jar</String>
<String>${oxygenHome}/lib/batik-all-*.jar</String>
<String>${oxygenHome}/lib/commons-logging-*.jar</String>
<String>${oxygenHome}/lib/xmlgraphics-commons-*.jar</String>
<String>${oxygenHome}/lib/commons-io-*.jar</String>
<String>${oxygenHome}/lib/avalon-framework-*.jar</String>
</String-array>
</field>
Therefore, I've tried by removing the wildcard-URLs from the "extensionURLs" section, and instead define them in the FOP task definition in the ANT build file that's being called:
Code: Select all
<taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop">
<classpath>
<fileset dir="${oxygen.home}/lib">
<include name="fop.jar"/>
<include name="batik-all-*.jar"/>
<include name="commons-logging-*.jar"/>
<include name="xmlgraphics-commons-*.jar"/>
<include name="commons-io-*.jar"/>
<include name="avalon-framework-*.jar"/>
</fileset>
</classpath>
</taskdef>
From this error message, I gather that the wildcards are correctly resolved to the matching file names. Yet, apparently the classpath is not set correctly, since the org/apache/fop/apps/FOPException class can't be found, even though it is present in C:\Program Files\Oxygen XML Editor 18\lib\fop.jar.BUILD FAILED
C:\Users\ron\AppData\Roaming\com.oxygenxml\extensions\v18.1\frameworks\myframework\jtei-pdf.xml:6: taskdef A class needed by class org.apache.fop.tools.anttasks.Fop cannot be found: org/apache/fop/apps/FOPException
using the classloader AntClassLoader[C:\Program Files\Oxygen XML Editor 18\lib\avalon-framework-api-4.3.1.jar;C:\Program Files\Oxygen XML Editor 18\lib\avalon-framework-impl-4.3.1.jar;C:\Program Files\Oxygen XML Editor 18\lib\batik-all-1.8.jar;C:\Program Files\Oxygen XML Editor 18\lib\commons-io-1.3.1.jar;C:\Program Files\Oxygen XML Editor 18\lib\commons-logging-1.2.jar;C:\Program Files\Oxygen XML Editor 18\lib\fop.jar;C:\Program Files\Oxygen XML Editor 18\lib\xmlgraphics-commons-2.1.jar]
I have the feeling I'm really close to a future and backward compatible solution... Am I still missing anything in the classpath definition for this FOP task?
Kind regards,
Ron
-
- Posts: 9434
- Joined: Fri Jul 09, 2004 5:18 pm
Re: defining the classpath for an ANT task in an ANT build file
Hi Ron,
I answered you on the opened issue.
https://github.com/TEIC/oxygen-tei/pull ... -259438650
Regards,
Radu
I answered you on the opened issue.
https://github.com/TEIC/oxygen-tei/pull ... -259438650
Regards,
Radu
Radu Coravu
<oXygen/> XML Editor
http://www.oxygenxml.com
<oXygen/> XML Editor
http://www.oxygenxml.com
Jump to
- Oxygen XML Editor/Author/Developer
- ↳ Feature Request
- ↳ Common Problems
- ↳ DITA (Editing and Publishing DITA Content)
- ↳ SDK-API, Frameworks - Document Types
- ↳ DocBook
- ↳ TEI
- ↳ XHTML
- ↳ Other Issues
- Oxygen XML Web Author
- ↳ Feature Request
- ↳ Common Problems
- Oxygen Content Fusion
- ↳ Feature Request
- ↳ Common Problems
- Oxygen JSON Editor
- ↳ Feature Request
- ↳ Common Problems
- Oxygen PDF Chemistry
- ↳ Feature Request
- ↳ Common Problems
- Oxygen Feedback
- ↳ Feature Request
- ↳ Common Problems
- Oxygen XML WebHelp
- ↳ Feature Request
- ↳ Common Problems
- XML
- ↳ General XML Questions
- ↳ XSLT and FOP
- ↳ XML Schemas
- ↳ XQuery
- NVDL
- ↳ General NVDL Issues
- ↳ oNVDL Related Issues
- XML Services Market
- ↳ Offer a Service