0

我之前在 stackoverflow 上看到了一些类似的问题,但没有看到任何解决方案。我想答案可能是不可能的,我想看看谁能给我这个确认。

AFAIK,一个蚂蚁项目包含几个目标,每个目标可能有几个任务。有一个任务 MacroDef 定义了一系列“事物”(我想是任务?)。我试图将目标放在这个块中,但 ant 抱怨缺少目标的名称(我正在使用宏定义的属性来生成目标的名称)。所以这可能是一个死胡同。

然后我发现通过使用任务“脚本”,我们可以访问项目,甚至可以从那里调用 addTarget/AddOrReplaceTarget。但似乎我在那里创建的目标对正在运行的目标没有影响。

这是否意味着 ant 不支持在目标运行时操作依赖项?在 ant 开始构建依赖图之前,有什么方法可以生成这些目标?

添加示例(ant -f a.xml 编译)

<?xml version="1.0" ?>
<project name="myproj" basedir=".">
  <target name="init">
    <script language="javascript"><![CDATA[
    importPackage (org.apache.tools.ant) ;

    var t = project.getCopyOfTargets ().get ("standard-compile") ;
    var nt = new Target () ;
    var echo = project.createTask ("echo") ;
    echo.setMessage ("hello world") ;
    nt.addTask (echo) ;
    nt.setName ("custom-compile") ;
    t.addDependency (nt) ;
    project.addTarget ("custom-compile", nt) ;
    ]]></script>
  </target>
  <extension-point name="standard-compile" depends="init" />
  <target name="compile" depends="standard-compile" />
</project>

(在实际问题中,我添加的目标可以是动态的(不同数量的目标和不同的目标),这里我只是硬编码一个来说明这个想法。)

4

0 回答 0