【问题标题】:Can one access the "name" of the enclosing target inside an ant macrodef?可以访问 ant 宏定义中封闭目标的“名称”吗?
【发布时间】:2013-04-09 07:16:59
【问题描述】:

如果我能做这样的事情那就太棒了:

<macrodef name="process-target">
    <attribute name="target" default="?enclosing.target.name?" />
    ...
</macrodef>


<target name="myTarget>
    <process-target/>
</target>

【问题讨论】:

标签: ant macrodef


【解决方案1】:

需要使用脚本来访问目标名称如下:

<project name="demo" default="run1">

    <macrodef name="process-target">
        <sequential>
            <script language="javascript">
            project.setProperty("enclosing.target.name", self.getOwningTarget());
            </script>
            <echo message="${enclosing.target.name}"/>
        </sequential>
    </macrodef>

    <target name="run1">
        <process-target/>
    </target>

    <target name="run2">
        <process-target/>
    </target>

</project>

【讨论】:

    【解决方案2】:

    我把它放在这里是因为我想在核心蚂蚁中有一个可选属性。

    <macrodef name="process-target">
        <attribute name="target" default="_not_set_" />
        <sequential>
            <property name="_target_" value="@{target}" />
            <script language="javascript">
                if(project.getProperty("_target_") == "_not_set_") {
                    project.setProperty("_target_", self.getOwningTarget());
                }
            </script>
            <echo message="${_target_}"/>
        </sequential>
    </macrodef>
    

    【讨论】:

      猜你喜欢
      • 2019-08-23
      • 1970-01-01
      • 2010-11-28
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多