> -----Original Message-----
> From: Mark Russell [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, 4 January 2006 3:42 AM
> To: Ant Users List
> Subject: Re: calling ant API from java instead of using
> build.xml from console
>
> I would be interested in looking at that code
You can checkout sources from:
svn checkout svn://svn.berlios.de/dpml/trunk/main
The packages you should be looking at include:
* main/depot/tools/builder - this is a plugin that creates an Ant project
and parameterizes the project with a template. During build
initialization
an independent library is consulted concerning project production info
from
build listeners are added (based on the types of resources the project
declares)
* main/depot/library/common - this is the project library definition that
holds info about projects, their build, runtime and tests dependencies,
and project specific properties
* main/depot/library/console - a command line handler that launches a
a build system implementation (the default is the Ant-based builder
plugin)
Additional information is available at:
http://www.dpml.net/depot/concepts/index.html
/Steve.
> Stephen McConnell wrote:
>
> >
> >
> >The approach your taking is kind of out of sync with the Ant object
> >model. A much easier approach is to construct your project, then
> >parameterize the project and finally trigger project execution. The
> >parameterization of the project could include:
> >
> > a) assign a project basedir
> > b) assigning a template build file - for example you could
> declare a
> >build file
> > that declares a bunch of build phases (e.g. init,
> prepare, build,
> >package,
> > test, install) - note: these target don't necessarily
> need to do
> >anything
> > c) add build listeners - you could create any number of build
> >listeners that
> > listener for build events declared in your template and
> these listeners
> > could be doing the bulk of the work needed to build your project
> >
> >In the build listeners you could do the sorts of things your
> describing
> >in your code:
> >
> > MyTask task = new MyTask();
> > task.setProject();
> > task.init();
> > task.setXxxx( whatever );
> > Yyy yyy = task.createYyy();
> > yyy.setSomething( true );
> > task.execute();
> >
> >This approach kind of ties into the overall assumptions made by ant
> >which in turn makes things a lot easier. If your interested
> I can point
> >you to code that does the above.
> >
> >Cheers, Steve.
> >
> >
> >
> >
> >>-----Original Message-----
> >>From: Dieter Frej [mailto:[EMAIL PROTECTED]
> >>Sent: Monday, 2 January 2006 6:45 PM
> >>To: [email protected]
> >>Subject: calling ant API from java instead of using build.xml from
> >>console
> >>
> >>Hi,
> >>
> >>I would like to call ant (1.6.5) from java (1.5.0_04-b05),
> but I am a
> >>little puzzled with all createXYZ, addXYZ, init, and
> execute methods
> >>and in which order they should be called.
> >>I wrote it the following way:
> >>
> >>
> >>
> >>Project project = new Project();
> >>
> >>XmlLogger xlog = new XmlLogger();
> >>project.addBuildListener(xlog);
> >>project.init();
> >>
> >>Target target = new Target();
> >>target.setLocation(new Location("somewhere"));
> >>target.setName("blubb");
> >>
> >>Mkdir mkdir = new Mkdir();
> >>mkdir.setProject(project);
> >>mkdir.setTaskName("init");
> >>
> >>mkdir.init();
> >>
> >>String destDir = "build/classes";
> >>mkdir.setDir(new File(destDir));
> >>
> >>target.addTask(mkdir);
> >>
> >>Javac javac = new Javac();
> >>javac.setProject(project);
> >>javac.setTaskName("compile");
> >>
> >>javac.init();
> >>
> >>String srcDir = "src";
> >>
> >>javac.setDestdir(new File(destDir));
> >>javac.setSrcdir(new Path(project, srcDir));
> >>
> >>javac.setDebug(true);
> >>javac.setDeprecation(false);
> >>javac.setOptimize(false);
> >>
> >>Path classPath = new Path(project);
> >>
> >>String classesDir = destDir;
> >>Path classesPath = classPath.createPath();
> >>classesPath.setPath(classesDir); classPath.add(classesPath);
> >>
> >>ArrayList<String> libs = new ArrayList<String>();
> >>libs.add("junit3.8.1/junit.jar");
> >>
> >>Iterator it = libs.iterator();
> >>while(it.hasNext()) {
> >> String lib = (String) it.next();
> >> FileSet libFile = new FileSet();
> >> libFile.setFile(new File(lib));
> >>
> >> classPath.addFileset(libFile);
> >>}
> >>
> >>javac.setClasspath(classPath);
> >>
> >>//Javac.ImplementationSpecificArgument compilerArgs =
> >>javac.createCompilerArg();
> //compilerArgs.setLine("-Xlint:deprecation
> >>-Xlint:unchecked");
> >>
> >>target.addTask(javac);
> >>
> >>project.addTarget("bla", target);
> >>
> >>project.executeTarget("bla");
> >>
> >>
> >>
> >>This more or less works fine, but I am not sure if it is correct,
> >>because the XmlLogger gets a NullPointerException that is caused by
> >>the fact that never buildStarted() is called...
> >>
> >>I hope someone is able to help me. Thanks in advance!
> >>
> >>-Didi
> >>
> >>------------------------------------------------------------
> ---------
> >>To unsubscribe, e-mail: [EMAIL PROTECTED] For
> additional
> >>commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >>
> >
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: [EMAIL PROTECTED] For
> additional
> >commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >
> >
>
>
> --
> Mark Russell
> Instantiations, Inc.
> 724-368-3331 (land line)
> http://www.instantiations.com
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]