Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Mail Systems
Eclipse Documentation

How To Guides
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Problem Solutions
Privacy Policy




Eclipse Plug-in Developer Guide
Previous Page Home Next Page

Running Ant buildfiles programmatically

The Ant support built into Eclipse allows plug-ins to programmatically run Ant buildfiles. This is done via the AntRunner class included in the org.eclipse.ant.core plug-in.

The following code snippet shows an example of how to use the AntRunner from within code of another plug-in:

import org.eclipse.ant.core.AntRunner;
import org.eclipse.core.runtime.IProgressMonitor;


public void runBuild() {
	IProgressMonitor monitor = ...
	AntRunner runner = new AntRunner();
	runner.setArguments("-Dmessage=Building -verbose");;

If a progress monitor is used, it is made available for the running tasks. See Progress Monitors for more details.

Note that only one Ant build can occur at any given time if the builds do not occur in separate VMs. See AntRunner.isBuildRunning();

Special care for native libraries if build occurs within the same JRE as the workspace

Every time an Ant buildfile runs in Eclipse a new classloader is created. Since a library can only be loaded by one classloader in Java, tasks making use of native libraries could run into problems during multiple buildfile runs. If the previous classloader has not been garbage collected at the time the new classloader tries to load the native library, an exception is thrown indicating the problem and the build fails. One way of avoiding this problem is having the library load be handled by a class inside a plug-in library. The task can make use of that class for accessing native methods. This way, the library is loaded by the plug-in classloader and it does not run into the load library conflict.


  Published under the terms of the Eclipse Public License Version 1.0 ("EPL") Design by Interspire