蚂蚁支持动态目标

时间:2013-11-01 21:50:15

标签: ant

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

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

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

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

添加一个例子(ant -f a.xml compile)

<?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>

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

0 个答案:

没有答案