source : http://unserializableone.blogspot.com/2009/01/using-ant-as-library.html
Ant has a lot of predefined tasks that could be a great help. You can use them directly from your java code. Here are some examples using Ant to download a file, unzip a package and exec some shell command.
You would need to have
+ ant-1.7.1.jar
+ ant-launcher-1.7.1.jar
+ commons-io-1.3.2.jar (for exec example, found at http://commons.apache.org/io)
in your classpath.
- publicclassAntDemo{
- /**
- *DownloadafileatsourceUrltodest
- *
- */
- publicstaticvoiddownload(URLsourceUrl,Filedest){
- ProjectdummyProject=newProject();
- dummyProject.init();
- GetantGet=newGet();
- antGet.setProject(dummyProject);
- antGet.setVerbose(true);
- antGet.setSrc(sourceUrl);
- antGet.setDest(dest);
- antGet.execute();
- }
- /**
- *Unzipazipfile
- *
- */
- publicstaticvoidunzip(Filesrc,Filedest){
- ProjectdummyProject=newProject();
- dummyProject.init();
- ExpandantUnzip=newExpand();
- antUnzip.setProject(dummyProject);
- antUnzip.setSrc(src);
- antUnzip.setDest(dest);
- antUnzip.execute();
- /*antdoesn'tpreservepermissionbits
- needtorestorethemmanually*/
- Chmodchmod=newChmod();
- chmod.setProject(dummyProject);
- chmod.setDir(newFile(src.getAbsolutePath().replaceAll(".zip","")));
- chmod.setPerm("a+rx");
- chmod.setIncludes("**/**");
- chmod.execute();
- }
- /**
- *RunashellcommandandreturntheoutputasString
- *
- */
- publicstaticStringexec(Stringcommand,List<STRING>params,FileworkDir){
- FileoutputFile;
- try{
- outputFile=File.createTempFile("exec",".out");
- }catch(IOExceptione){
- thrownewRuntimeException(e);
- }
- ProjectdummyProject=newProject();
- dummyProject.init();
- ExecTaskexecTask=newExecTask();
- execTask.setProject(dummyProject);
- execTask.setOutput(outputFile);
- execTask.setDir(workDir!=null?workDir:newFile(System
- .getProperty("user.dir")));
- execTask.setExecutable(command);
- if(params!=null){
- for(Stringparam:params){
- execTask.createArg().setValue(param);
- }
- }
- execTask.execute();
- FileReaderreader=null;
- try{
- reader=newFileReader(outputFile);
- returnIOUtils.toString(reader);
- }catch(Exceptione){
- thrownewRuntimeException(e);
- }finally{
- IOUtils.closeQuietly(reader);
- outputFile.delete();
- }
- }
- publicstaticvoidmain(String[]args){
- List<STRING>params=Arrays.asList(newString[]{"Hello","World"});
- System.out.println(exec("echo",params,null));
- }
- }
public class AntDemo {
/**
* Download a file at sourceUrl to dest
*
*/
public static void download(URL sourceUrl, File dest) {
Project dummyProject = new Project();
dummyProject.init();
Get antGet = new Get();
antGet.setProject(dummyProject);
antGet.setVerbose(true);
antGet.setSrc(sourceUrl);
antGet.setDest(dest);
antGet.execute();
}
/**
* Unzip a zip file
*
*/
public static void unzip(File src, File dest) {
Project dummyProject = new Project();
dummyProject.init();
Expand antUnzip = new Expand();
antUnzip.setProject(dummyProject);
antUnzip.setSrc(src);
antUnzip.setDest(dest);
antUnzip.execute();
/* ant doesn't preserve permission bits
need to restore them manually */
Chmod chmod = new Chmod();
chmod.setProject(dummyProject);
chmod.setDir(new File(src.getAbsolutePath().replaceAll(".zip", "")));
chmod.setPerm("a+rx");
chmod.setIncludes("**/**");
chmod.execute();
}
/**
* Run a shell command and return the output as String
*
*/
public static String exec(String command, List params, File workDir) {
File outputFile;
try {
outputFile = File.createTempFile("exec", ".out");
} catch (IOException e) {
throw new RuntimeException(e);
}
Project dummyProject = new Project();
dummyProject.init();
ExecTask execTask = new ExecTask();
execTask.setProject(dummyProject);
execTask.setOutput(outputFile);
execTask.setDir(workDir != null ? workDir : new File(System
.getProperty("user.dir")));
execTask.setExecutable(command);
if (params != null) {
for (String param : params) {
execTask.createArg().setValue(param);
}
}
execTask.execute();
FileReader reader = null;
try {
reader = new FileReader(outputFile);
return IOUtils.toString(reader);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
IOUtils.closeQuietly(reader);
outputFile.delete();
}
}
public static void main(String[] args) {
List params = Arrays.asList(new String[] { "Hello", "World" });
System.out.println(exec("echo", params, null));
}
}
Just note that you'll need a dummy project for the Ant task. Otherwise you'll get an NullPointerException.
There are a lot of tasks that you could use. The list is here http://ant.apache.org/manual/tasksoverview.html