Hi there,

I am having trouble using third party ant tasks, with nested elements, from the Ant API. For example the ant-contrib IfTask and the svnant SvnTask.

I am able to use both of these tasks in build scripts without a problem, when running ant from the command line. But I want to use them from the Ant API. However when I do this with Ant 1.6.0 I get an error similar to below, which is clearly not correct:

build.xml:215: Class net.sf.antcontrib.logic.IfTask doesn't support the nested "equals" element.

With Ant 1.6.5 I get:

build.xml:215: java.lang.NullPointerException

I'm running:

RedHat 9
Java 1.4.2 (build 1.4.2_03-b02)
Ant 1.6.0 (compiled on December 18 2003) and 1.6.5 (compiled on June 2 2005)

Below is some sample code and a link to a working (but broken) project that demonstrates the problem.

Any help would be appreciated. Thanks,

Gerry

SAMPLE CODE:

The section of the build that is failing is trivial:

 <if>
   <equals arg1="yes" arg2="no" />
   <then>
     <echo message="same"/>
   </then>
   <else>
     <echo message="different"/>
   </else>
 </if>

And the taskdef is declared as below:

<taskdef resource="net/sf/antcontrib/antlib.xml">
 <classpath refid="antlib.classpath" />
</taskdef>


I've also tried the following declarations, which makes no difference

<taskdef resource="net/sf/antcontrib/antlib.xml">
 <classpath>
   <pathelement location="/full/path/to/ant-contrib.jar" />
 </classpath>
</taskdef>

<taskdef name="svn" classname="net.sf.antcontrib.logic.IfTask">
 <classpath refid="antlib.classpath" />
</taskdef>


The relevent API code is:

String buildFile = "/path/to/build/file";
String buildDir = "/path/to/build/dir";

try {

 project.fireBuildStarted();
 project.init();

 project.setBaseDir( new File( buildDir ));
 project.setUserProperty( "ant.file", buildFile);
 project.setUserProperty( "ant.version", Main.getAntVersion());

 ProjectHelper projHelper = new ProjectHelperImpl();
 projHelper.parse(project, new File(buildFile));
 project.executeTarget( target );

} catch( Throwable ex) {

error = ex; } finally {

 project.fireBuildFinished(error);

}


EXAMPLE PROJECT:

http://www.soci.org.uk/anttest.zip

Files:
build.xml: buids AntTest.class
anttest.sh: runs AntTest, which uses Ant API
anttest.xml: build file  used by anttest.sh

to build:
# ant

to run:
# ./anttest.sh


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to