如何修复仅允许作为顶级任务的Ant导入?

时间:2014-10-31 19:08:45

标签: xml ant import

以下代码会引发以下错误:仅允许导入作为顶级任务

<target name="packfiles">
        <if>
            <equals arg1="${pack.type}" arg2="impl1" />
            <then>
                <import as="packimpl" file="myImplementation1.xml">
            </then>
            <else>
                 <import as="packimpl" file="myImplementation2.xml">
            </else>
        </if>

        <antcall target="packimpl.build" />

</target>

2 个答案:

答案 0 :(得分:2)

任务documentation明确提及:

  

导入任务只能用作顶级任务。这意味着它可能不会在目标中使用。

要解决此问题,只需将导入移到目标之外。

<project ...>

   ...

   <if>
       <equals arg1="${pack.type}" arg2="impl1" />
       <then>
           <import as="packimpl" file="myImplementation1.xml">
       </then>
       <else>
            <import as="packimpl" file="myImplementation2.xml">
       </else>
   </if>


   <target name="packfiles">        
      <antcall target="packimpl.build" />
   </target>

   ...

</project>

答案 1 :(得分:2)

<ac:if> <isset property="some_property_is_set" /> <then> <import file="file1.xml" /> </then> </ac:if>

在开始声明目标

之前尝试以上操作

“在执行时,它将选择适当的ProjectHelper来解析导入的文件,使用与启动时执行的算法相同的算法。所选的ProjectHelper实例将负责实际解析导入的文件”

来源:http://ant.apache.org/manual/Tasks/import.html