Hi,
to run optional tasks, you need the corresponding ant-xyz jar files in the
classpath, plus also the corresponding non ant jar files.
For instance for ftp, you need commons-net and jakarta-oro.
This is all documentented in the manual, in the section installing ant,
library dependencies.
Cheers,
Antoine
>
>
> I am able to run ant from java program with the way mentioned by you
> ,but if there are any optional tasks
> it is giving the errors or "could not create task" for that optional
> task,where as if run the same build.xml with
> optional task using ant command it executes very well, the problem
> persists only if i am calling that java program
> and that too it should have optional task,here am i missing any classpath
> or any some thing like that
> i even tried with executing java -cp option but still it doesn't work ,any
> help would be great.
>
> thanks,
> Murali
>
> -----Original Message-----
> From: Olivier Croisier [mailto:Olivier.Croisier@thales-is.com]
> Sent: Wednesday, August 25, 2004 11:44 AM
> To: Ant Users List
> Subject: Re: calling ant from java program
>
>
> > How can I call a ant task from java program?
> > Regds
> > Ashutosh
>
>
> Here is some code I wrote.
> It allows you to run any ant target from within a regular Java app.
> You'll need ant-launcher.jar and ant.jar for this class to compile.
> Enjoy :)
>
> BTW, any comment/idea/debug/fix welcome !
>
>
>
> import org.apache.tools.ant.*;
>
> import java.io.*;
> import java.util.*;
>
> /**
> * <PRE>
> * This class is designed to call Ant targets from any Java
> application.
> * 1. Initialize a new Project by calling "init"
> * 2. Feed Ant with some properties by calling "setProperties"
> (optional)
> * 3. Run an Ant target by calling "runTarget"
> *
> *
> * Example :
> *
> * try
> * {
> * //init
> * init("/home/me/build.xml","/home/me/");
> * //properties
> * HashMap m = new HashMap();
> * m.put("event", "test");
> * m.put("subject", "sujet java 3");
> * m.put("message", "message java 3");
> * setProperties(m, false);
> * //run
> * runTarget("test");
> * } catch (Exception e) { e.printStackTrace(); }
> * </PRE>
> *
> * @author croisier
> */
>
>
> public class AntRunner
> {
> private Project project;
>
>
> /**
> * Initializes a new Ant Project.
> * @param _buildFile The build File to use. If none is provided, it
> will be defaulted to "build.xml".
> * @param _baseDir The project's base directory. If none is provided,
> will be defaulted to "." (the current directory).
> * @throws Exception Exceptions are self-explanatory (read their
> Message)
> */
> public void init(String _buildFile, String _baseDir) throws Exception
> {
> // Create a new project, and perform some default initialization
> project = new Project();
> try { project.init(); }
> catch (BuildException e)
> { throw new Exception("The default task list could not be
> loaded."); }
>
> // Set the base directory. If none is given, "." is used.
> if (_baseDir == null) _baseDir=new String(".");
> try { project.setBasedir(_baseDir); }
> catch (BuildException e)
> { throw new Exception("The given basedir doesn't exist, or
> isn't a directory."); }
>
> // Parse the given buildfile. If none is given, "build.xml" is
> used.
> if (_buildFile == null) _buildFile=new String("build.xml");
> try { ProjectHelper.getProjectHelper().parse(project, new
> File(_buildFile)); }
> catch (BuildException e)
> { throw new Exception("Configuration file "+_buildFile+" is
> invalid, or cannot be read."); }
> }
>
>
>
> /**
> * Sets the project's properties.
> * May be called to set project-wide properties, or just before a
> target call to set target-related properties only.
> * @param _properties A map containing the properties' name/value
> couples
> * @param _overridable If set, the provided properties values may be
> overriden by the config file's values
> * @throws Exception Exceptions are self-explanatory (read their
> Message)
> */
> public void setProperties(Map _properties, boolean _overridable)
> throws Exception
> {
> // Test if the project exists
> if (project == null) throw new Exception("Properties cannot be
> set because the project has not been initialized. Please call the 'init'
> method first !");
>
> // Property hashmap is null
> if (_properties == null) throw new Exception("The provided
> property map is null.");
>
> // Loop through the property map
> Set propertyNames = _properties.keySet();
> Iterator iter = propertyNames.iterator();
> while (iter.hasNext())
> {
> // Get the property's name and value
> String propertyName = (String) iter.next();
> String propertyValue = (String)
> _properties.get(propertyName);
> if (propertyValue == null) continue;
>
> // Set the properties
> if (_overridable) project.setProperty(propertyName,
> propertyValue);
> else project.setUserProperty(propertyName, propertyValue);
> }
> }
>
>
>
> /**
> * Runs the given Target.
> * @param _target The name of the target to run. If null, the
> project's default target will be used.
> * @throws Exception Exceptions are self-explanatory (read their
> Message)
> */
> public void runTarget(String _target) throws Exception
> {
> // Test if the project exists
> if (project == null) throw new Exception("No target can be
> launched because the project has not been initialized. Please call the
'init'
> method first !");
>
> // If no target is specified, run the default one.
> if (_target == null) _target = project.getDefaultTarget();
>
> // Run the target
> try { project.executeTarget(_target); }
> catch (BuildException e)
> { throw new Exception(e.getMessage()); }
> }
>
> }
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org
|