gpt4 book ai didi

Ant: "Duplicated project name in import"带有导入的构建文件

转载 作者:行者123 更新时间:2023-12-04 02:24:10 26 4
gpt4 key购买 nike

我有几个构建文件,它们都导入相同的基础构建文件,如下所示:

base.xml:

<project name="base">
<!-- does not define a 'build' target -->
</project>

buildA.xml:

<project name="buildA">
<import file="base.xml" />
<target name="build">
<ant antfile="buildB.xml" target="build"
inheritall="false" inheritrefs="false" />
</target>
</project>

buildB.xml:

<project name="buildB">
<import file="base.xml" />
<target name="build">
...snip...
</target>
</project>

(模块 A 依赖于模块 B。)

现在,上面从 buildA.xml 调用 B 的 build 目标会出现以下错误:

导入中的项目名称重复。项目基础首先在 buildA.xml 中定义,然后在 buildB.xml 中再次定义

由于 buildA.xmlbuildB.xml 都继承了相同的 base.xml,这似乎是不可避免的。

我怎样才能摆脱这个错误?

最佳答案

根据sudocode的回答,我解决了这个问题。因为 base.xml 的绝对路径在这两种情况下都不同,所以 Ant 不会将其识别为同一个文件。即使 inheritAll 设置为 false,调用任务的上下文仍会保留,这会导致名称冲突。

要解决这个问题,可以从 base.xml 中省略 name 属性。从 Ant 1.8 开始,import task 有一个属性as,当base project 是无名的时候可以用来引用base targets。如果您不覆盖任何目标,则可以使用 include而不是 import。我使用的是 1.7,所以这对我没有帮助。

对于以前版本的 Ant,您可以通过 exec调用以完全防止 Ant 上下文的扩散(然后您将获得两个正在运行的 Ant 实例)。更好的是,找到一种方法在两个文件中导入完全相同的 base.xml(具有相同的绝对路径)。

关于Ant: "Duplicated project name in import"带有导入的构建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8566191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com