Thank you Antoine, I do have a follow-up question on this though. Will this be thread safe? Is it possible to run two targets in parallel from Java code, without any interactions (different projects, property sets and so on)? I am especially afraid of the system properties which may be shared and set/read from parallel ant projects.
I'd also be interested in running ant tasks in parallel on *different* versions of Ant (for script migrations purposes), which would probably lead to using different class loaders. Is that something feasible? Thanks again, Patrick On Wed, Jan 12, 2011 at 9:22 PM, Antoine Levy Lambert <anto...@gmx.de> wrote: > Hello Patrick, > > you can have a look at this document from our manual too : > > http://ant.apache.org/manual/antexternal.html > > Creating a Project object is necessary in nearly all cases because ant tasks > generally need to be bound to a project in order to be able to log. > > I have another example which is similar to the one above but is more > complete : > > package com.acme.anttasks; > > import org.apache.tools.ant.DefaultLogger; > import org.apache.tools.ant.Project; > import org.apache.tools.ant.Target; > > /** > */ > public class SomeTaskWrapper { > public static void main(String[] args) { > Project antProject = new Project(); > SomeTask someTask = new SomeTask(); > // create a target, since every execute in Ant need a target > Target antTarget = new Target(); > antTarget.setName("targetName"); > antProject.addTarget(antTarget); > > // specify that this target will execute SomeTask > antTarget.addTask(someTask); > > DefaultLogger antDefaultLogger = new DefaultLogger(); > antDefaultLogger.setEmacsMode(true); > antDefaultLogger.setErrorPrintStream(System.err); > antDefaultLogger.setOutputPrintStream(System.out); > antDefaultLogger.setMessageOutputLevel(Project.MSG_INFO); > > antProject.addBuildListener(antDefaultLogger); > antProject.executeTarget("targetName"); > } > > } > Regards, > > Antoine > > On 1/12/11 8:08 AM, Patrick Martin wrote: >> >> Hello and happy new year to you all, >> >> What is the recommended way for launching an Ant script/task from Java >> code ? >> >> It seems to me that the following URL >> http://ant.apache.org/manual/running.html#viajava >> rather explains how to launch Ant with java.exe from the command line. >> Is it also recommended to launch the main() method from with a Java >> code? Or is there a launch API that can be used? >> >> I also found people working directly with the Ant project class. Something >> like: >> Project p = new Project(); >> p.initProperties(); >> p.setBaseDir(getBaseDir(baseDir, buildFile)); >> p.setUserProperty("ant.file", getBuildFile(buildFile)); >> try { >> p.fireBuildStarted(); >> p.init(); >> ProjectHelper helper = ProjectHelper.getProjectHelper(); >> p.addReference("ant.projectHelper", helper); >> helper.parse(p, buildFile); >> p.executeTarget(null == target ? p.getDefaultTarget() : target); >> p.fireBuildFinished(null); >> } catch (BuildException e) { >> p.fireBuildFinished(e); >> [...] >> } finally { >> [...] >> } >> >> Thank you, >> >> Patrick >> >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@ant.apache.org > For additional commands, e-mail: user-h...@ant.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@ant.apache.org For additional commands, e-mail: user-h...@ant.apache.org