You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by "M. Z." <co...@yahoo.com> on 2005/08/08 04:09:33 UTC
Help!! How to call imported ant target in Java
Hi,
This is to draw your attention to my query, as I
really need help on this.
I have to call a main build file from java code to do
a task. But the task has to be defined in another
build file imported to the main file. Then I did a
simple test (as below) to see who to implement it. It
turned out to me that seems the main file with
<import> can't be parsed. I'd like to know how to
correct it.
Any advice would be appreciated!
Thanks,
Amy
--- "M. Z." <co...@yahoo.com> wrote:
Here's my Java code (I got the sample from this
mailing list, thanks):
---------------------------------------------
import org.apache.tools.ant.*;
import java.io.*;
import java.util.*;
public class MyTest
{
private Project project;
public void init(String _buildFile, String
_baseDir) throws
Exception
{
project = new Project();
try { project.init(); }
catch (BuildException e)
{ throw new Exception("The default task
list could not be
loaded."
); }
// Set the base directory. If none is given,
"." is used.
if (_baseDir == null) _baseDir=new
String(".");
try { project.setBasedir(_baseDir); }
catch (BuildException e)
{ throw new Exception("The given basedir
doesn't exist, or
isn't a directory."); }
if (_buildFile == null) _buildFile=new
String("a.xml");
try {
ProjectHelper.getProjectHelper().parse(project, new
File(_buildFile)); }
catch (BuildException e)
{ throw new Exception("Configuration file
"+_buildFile+" is
invalid, or cannot be read."); }
}
public void runTarget(String _target) throws
Exception
{
// Test if the project exists
if (project == null) throw new Exception("No
target can be
launched because the project has not been initialized.
Please call the
'init' method first !");
// If no target is specified, run the default
one.
if (_target == null) _target =
project.getDefaultTarget();
// Run the target
try { project.executeTarget(_target); }
catch (Exception e)
{ throw new Exception(e.getMessage()); }
}
public static void main(String args[])
{
try{
MyTest mytest=new MyTest();
mytest.init("c.xml",".");
mytest.runTarget(null);
}catch(Exception e)
{
e.printStackTrace();
}
}
}
---------------------------------------------
Here's my build files:
1.c.xml:
<project basedir="." default="runtests" name="TestC">
<import file="a.xml"/>
</project>
2. a.xml:
<project basedir="." default="runtests" name="TestA">
<target name="runtests" depends="">
<mkdir dir="ttt"/>
</target>
</project>
--------------------------------------
If I directly set build file "a.xml" in MyTest.java,
everthing works
well. However, if I set "c.xml" then do task "<mkdir
dir="ttt"/>" defined
in "a.xml" which was imported by "c.xml", when
running, I got an
exception. Looks like it can't parse my c.xml which
include "import". BTW,
I'm using ant 1.6.2, and running "ant -f c.xml" was
ok.
Did I miss any classpath or something? Any idea?
Thanks,
Amy
____________________________________________________
Start your day with Yahoo! - make it your home page
http://www.yahoo.com/r/hs
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org