我正在尝试使用 org.apache.tools.ant 库从 Java 代码以编程方式运行 Ant 脚本。
这很好,除非我有一些外部定义的任务。
我们假设我的build.xml看起来如下:
<project name="sample" basedir="." default="all">
<target name="all">
<echo>Ant From Java</echo>
</target>
<taskdef name="mytask" classname="my.task.Mytask" />
</project>
我的文件 mylib.jar 在 / home / mylib 目录中包含 my.task.Mytask 类
当我使用以下命令运行脚本时,脚本显然有效:
ant all -lib /home/mylib
但不是这个
ant all
在Java代码中,使用
以后的方式部署Ant非常容易import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;
....
....
String buildXmlFile = "/home/build.xml";
Project project = new Project();
File buildFile = new File(buildXmlFile);
project.setUserProperty("ant.file", buildFile.getAbsolutePath());
project.fireBuildStarted();
project.init();
ProjectHelper projectHelper = ProjectHelper.getProjectHelper();
project.addReference("ant.projectHelper", projectHelper);
projectHelper.parse(project, buildFile);
project.executeTarget("all");
project.fireBuildFinished(null);
但我无法在 org.apache.tools.ant 库中找到“ -lib / home / mylib ”等效。
我几乎肯定它应该在某处,但我一直在尝试没有成功,也许有人知道我的问题的简单解决方案。
我会提供任何帮助!