package tiger;
import java.io.File;
import org.apache.tools.ant.DefaultLogger;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;
public class AntTest {
private Project project;
public void init(String _buildFile, String _baseDir) throws Exception {
project = new Project();
project.init();
DefaultLogger consoleLogger = new DefaultLogger();
consoleLogger.setErrorPrintStream(System.err);
consoleLogger.setOutputPrintStream(System.out);
consoleLogger.setMessageOutputLevel(Project.MSG_INFO);
project.addBuildListener(consoleLogger);
// Set the base directory. If none is given, "." is used.
if (_baseDir == null)
_baseDir = new String(".");
project.setBasedir(_baseDir);
if (_buildFile == null)
_buildFile = new String(
"E:/JEE/Workspaces/MyEclipse 8.6/Study/src/tiger/a.xml");
//ProjectHelper.getProjectHelper().parse(project, new File(_buildFile));
// 关键点
ProjectHelper.configureProject(project, new File(_buildFile));
}
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
project.executeTarget(_target);
}
public static void main(String args[]) {
try {
AntTest mytest = new AntTest();
mytest.init(
"E:/JEE/Workspaces/MyEclipse 8.6/Study/src/tiger/c.xml",
".");
mytest.runTarget(null);
} catch (Exception e) {
e.printStackTrace();
}
}
}
a.xml
<?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="runtests" name="TestA"> <target name="runtests" depends=""> <echo message="Tiger" /> </target> </project>
c.xml
<?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="runtests" name="TestC"> <import file="a.xml" /> </project>