On 12/7/06, Scot P. Floess <[EMAIL PROTECTED]> wrote:
I am trying to define an arbitrary directory to hold all jar files I
need in a <scriptdef> and "somehow" force ant to use that directory (and
its contents) as part of the classpath...
I know I can use -lib option for ant, but I am hoping there is something
I can do inside my ant script. I was able to include the ant-contrib
package programatically using:
<taskdef classpath = "/foo/bar/ant-contrib.jar" resource =
"net/sf/antcontrib/antlib.xml"/>
I'm hoping there is a similar mechanism I am missing.
The script language I am trying to use is beanshell. For various
reasons (long story) I want to do this inside an ant script if
possible. I do know I can also put the jars in $ANT_HOME/lib - again
I'm not wanting to do that...
Thanks ahead of time...
This has (nearly) already been done.
In the lastest nightly build (http://people.apache.org/builds/ant/nightly/)
the classpath attributes/nested elements from <scriptdef/> has been
linked to the
bsf/jsr classloader so the following now works:
<scriptdef name="b1" language="beanshell" loaderref="beanshell">
<attribute name="a"/>
<classpath path="${user.home}/.ant/lib/x/bsh-1.3b1.jar"/>
self.log("attribute a is " + attributes.get("a"));
</scriptdef>
<scriptdef name="b2" language="beanshell" loaderref="beanshell">
<attribute name="a"/>
self.log("attribute a is " + attributes.get("a"));
</scriptdef>
<b1 a="this is an 'a'"/>
<b2 a="this is an 'a' for b2"/>
However there are some shortcomings due to classloading issues:
* the bsf.jar must still be in the project classpath (i.e. in $ANT_HOME/lib
or ~/.ant/lib or in a -lib command line dir).
* any language that have engines in bsf.jar also have to be in the
project classpath (these are javascript, jython, jacl, netrexx and xslt)
I have a fix for this, however as it is messes with classloading, I am
hesitant to commit it for ant 1.7.0.
On can use JDK scripting without these issues, except that javascript
is built-in to the JDK and one cannot easily change the javascript
implementation.
Peter
Scot
--
Scot P. Floess
27 Lake Royale
Louisburg, NC 27549
252-478-8087 (Home)
919-754-4592 (Work)
Chief Architect JPlate http://sourceforge.net/projects/jplate
Chief Architect JavaPIM http://sourceforge.net/projects/javapim
---------------------------------------------------------------------
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]