9

我有两个蚂蚁文件:

1) 主文件

<include file="otherFile.xml" as="otherFile"/>

<target name="firstTarget">
    <antcall target="otherFile.secondTarget"/>
</target>

2) 实用程序文件

<target name="secondTarget">
    <antcall target="thirdTarget"/>
</target>

<target name="thirdTarget">
     <echo message="ok"/> 
</target>

当我调用它时,firstTarget它说它找不到thirdTarget. 如果我改变secondTarget这种方式:

<target name="secondTarget">
    <antcall target="otherFile.thirdTarget"/>
</target>

然后它工作。但是我不能直接使用 secondTarget 。因为第二个文件不知道前缀 otherFile

4

6 回答 6

4

你可以试试:

<ant antfile="otherFile.xml" target="secondTarget"/>

并且不需要包含 otherFile。

于 2015-07-07T06:25:09.440 回答
1

在将被直接调用和包含的任何文件中使用以下模式:

<project name="my-project">
  <!-- if this is the top-level build.xml, ${self} == "" -->
  <condition property="self" value="">
    <equals arg1="${ant.project.name}" arg2="my-project" />
  </condition>
  <!-- if this is an included build.xml, ${self} == "my-project." -->
  <property name="self" value="my-project." /><!-- note the trailing dot -->
  ...

然后对 antcall 使用以下命令:

<antcall target="${self}target" />
于 2016-02-03T16:27:30.607 回答
0

您是否在没有 fileName 的情况下尝试过(只是 secondTarget ):

<target name="firstTarget">
    <antcall target="secondTarget"/>
</target>

并在没有别名的情况下导入它;

<include file="otherFile.xml"/>

有一次,我确实喜欢这个,它奏效了。

于 2014-05-13T08:20:39.037 回答
0

ANT 文档说:

对于每个包含的文件,Ant 添加一个属性,该属性包含包含的构建文件的路径。使用此路径,包含的构建文件可以保留资源并能够相对于其位置引用它们。因此,如果我包含例如名为 builddocs 的 docsbuild.xml 文件,我可以将其路径作为 ant.file.builddocs 获取,类似于主构建文件的 ant.file 属性。

您可以利用它来做您想做的事情,即无论是从“包含”上下文还是顶级上下文调用 antcall 都可以正常工作。您应该做的是将属性的值设置为 otherFile.context 为“otherFile”。如果属性 ant.file.otherFile 已定义,如果未定义,则为 ''(即空字符串)。然后你可以只使用属性扩展来调用目标;例如:

<antcall target="${otherFile.context}thirdTarget"/>

没有尝试过,但我看不出它为什么不起作用。

于 2013-11-26T20:35:31.337 回答
0
<import file="otherFile.xml"/>    
<target name="firstTarget">
        <antcall target="secondTarget"/>
</target>

使用导入任务上传您的文件,这对我有用!!!!

于 2017-01-11T11:27:51.050 回答
-1

您可以对与以下相同文件中的目标进行 ant 调用:

<target name="secondTarget">
    <antcall target="thirdTarget" antfile="${ant.file}"/>
</target>
于 2015-04-23T22:14:22.167 回答