ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Antoine Levy Lambert <anto...@gmx.de>
Subject Re: launch Ant from Java code
Date Wed, 12 Jan 2011 20:22:56 GMT
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-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message