ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stephen McConnell" <mcconn...@dpml.net>
Subject RE: calling ant API from java instead of using build.xml from console
Date Tue, 03 Jan 2006 17:25:45 GMT
 

> -----Original Message-----
> From: Mark Russell [mailto:mark_russell@instantiations.com] 
> 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:dieter_frej@gmx.net]
> >>Sent: Monday, 2 January 2006 6:45 PM
> >>To: user@ant.apache.org
> >>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: user-unsubscribe@ant.apache.org For 
> additional 
> >>commands, e-mail: user-help@ant.apache.org
> >>
> >>    
> >>
> >
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: user-unsubscribe@ant.apache.org For 
> additional 
> >commands, e-mail: user-help@ant.apache.org
> >
> >
> >  
> >
> 
> 
> --
> Mark Russell
> Instantiations, Inc.
> 724-368-3331 (land line)
> http://www.instantiations.com 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
> 


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


Mime
View raw message