Hi Dean,

I use this technique frequently as in this example lifted straight from my code, see below. All you have to remember is that a top level project owns many targets which in turn own many tasks, so just make sure you set up the parent/child references in both directions.

                // create the ant parent project
                Project project = new Project();
                project.setName("project");
                project.init();

                // create the child target
                Target target = new Target();
                target.setName("target");
                project.addTarget(target);
                project.addBuildListener(new Log4jListener());

                // create the child untar task with gzip compression
                Untar untar = new Untar();
                untar.setTaskName("untar");
                untar.setSrc(artifactFile);
                untar.setDest(new File("."));
Untar.UntarCompressionMethod method = new Untar.UntarCompressionMethod();
                method.setValue("gzip");
                untar.setCompression(method);
                untar.setProject(project);
                untar.setOwningTarget(target);
                target.addTask(untar);

                project.execute();

I am also the architect of ProtoJ over at google code http://code.google.com/p/protoj/ which builds on ant and other
dependencies to control a project from java rather than script.

- Ashley



On 11 Jun 2009, at 16:28, Dean Schulze wrote:


The Ant documentation has a section titled "Using Ant Tasks Outside
of Ant" which gives a teaser for how to use the Ant libraries from Java
code.  In theory it seems simple enough to replace build.xml with
Build.java. The Ant documentation hints at some undocumented
dependencies that I'll have to discover (undocumented from the point of
view of using Ant from within Java).
Using Java instead of xml to do an Ant build seems so obvious I wonder why there hasn't been a parallel track over the years for Build.java as well as build.xml.
I asked this same question over at stackoverflow.com:
http://stackoverflow.com/questions/972574/replacing-build-xml-with-build-java-using-java-and-the-ant-libraries-as-a-build
The answers indicate that it isn't difficult to do, but that it is necessary to "spoof" the project and target objects. While it all looks encouraging I haven't seen any actual examples of how to deal with the undocumented issues mentioned. Has anyone documented how to do Ant builds from Java?
Thanks.
Dean






---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@ant.apache.org
For additional commands, e-mail: user-h...@ant.apache.org

Reply via email to