ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Velagapudi, Murali" <murali.velagap...@citigroup.com>
Subject RE: calling ant from java program
Date Mon, 30 Aug 2004 18:33:50 GMT
Hi,

 Antoine thx for reply,i had kept both commons-net.jar and jakarta-oro.jar files in ant/lib

,but when i call from java program it does not work(it works if build.xml didn't have any
optional task)
when i run from command it works well and send the file,
but the problem is when i run this using the below java program it is not able to recognize
ftp task 
(not only ftp also telnet,script etc say optional tasks)
it says could not find ftp task i tried to run the program using 
java -cp commons-net.jar;jakarta-oro.jar ..but still it is not taking up..
is there any thing i need to keep in class path ?.

here is the snippet i have been working on

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="ftp" name="build"> 
    
<target name="ftp"> 
  <ftp server="server.com"
       remotedir="/root/temp"
       userid="user"
       password="pwd"
       separator="/"
       verbose="yes"
       binary="yes"
  >
    <fileset dir="c:\temp">
      <include name="temp.txt"/>
    </fileset>
  </ftp>
</target>  
   </project>


import org.apache.tools.ant.*;

import java.io.*;
import java.util.*;



public class AntRunner
{
     private Project project;

     public void init(String _buildFile, String _baseDir) throws
Exception
     {
         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.");
}
   
         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."); }
     }


     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()); }
     }

         public static void main(String args[])
	     {
	 		try{

	 			
	 			AntRunner ar=new AntRunner();	 			
	 			ar.init("build.xml",".");	 			
	 			ar.runTarget(null);

	 		}catch(Exception e)
	 		{
	 			e.printStackTrace();
	 		}
	}

}

thanks
Murali


-----Original Message-----
From: Antoine Levy-Lambert [mailto:antoine@gmx.de]
Sent: Monday, August 30, 2004 2:20 PM
To: Ant Users List
Subject: RE: calling ant from java program


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


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


Mime
View raw message