Ant 蚂蚁对动态目标的支持

Ant 蚂蚁对动态目标的支持,ant,Ant,我以前在stackoverflow上看到过一些类似的问题,但没有看到任何解决方案。我想答案可能是不可能的,我正试图看看谁能给我这个确认 一个ant项目包含多个目标,每个目标可能有多个任务。有一个任务宏定义,它定义了一系列“事物”(我想是任务吧?)。我试图将目标放在这个块中,但ant抱怨缺少目标的名称(我正在使用macrodef的属性生成目标的名称)。所以这可能是一条死胡同 然后我发现,通过使用任务“script”,我们可以访问该项目,甚至可以从那里调用addTarget/AddOrReplace

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

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

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

这是否意味着ant不支持在目标运行时操纵依赖项?在ant开始构建依赖关系图之前,有没有办法生成这些目标

添加一个示例(ant-fa.xml编译)



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

请发布您尝试过的build.xml和得到的结果。您想解决什么问题?动态生成目标不是很有用。您是否试图在运行时调用不同的任务?在这种情况下,也许可以使用嵌入ANT的脚本语言,例如groovy。是的,我找到了一种解决“实际问题”的方法,它不需要这种动态目标创建技术。但无论如何,我仍然好奇这是否可行。
<?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>