我有一个带有路径声明的主构建文件
<path id="path.app.src">
<pathelement location="myfolder/src"/>
</path>然后,我使用<ant>调用子文件中的任务
<ant antfile="subbuild.xml" inheritAll="false" inheritRefs="false">
<reference refid="path.app.src"/>
</ant> 在subbuild.xml中,我有:
<path id="subpath.app.src">
<pathelement location=".. some locations .."/>
<path refid="path.app.src" />
</path>在我的理解中,使用嵌套的<ant>调用应该覆盖subbuild.xml中的path.app.src。
但是我得到一个错误,比如: subbuild.xml:xx: Reference path.app.src not found。
我做错了什么吗?这是ant中的一个bug吗?
我使用的是2006年12月13日编译的Apache Ant 1.7.0版
谢谢,莱昂内尔
发布于 2009-07-15 04:36:55
事实上,它现在似乎有正确的行为,但我不能解释我第一次做错了什么。
以下是代码示例: build.xml
<?xml version="1.0"?>
<project name="test" default="build" basedir=".">
<path id="mainpath">
<pathelement location="my/main/path"/>
</path>
<target name="build">
<ant antfile="subbuild.xml" target="test">
<reference refid="mainpath" torefid="globalpathid"/>
<reference refid="mainpath" torefid="localtotargetpathid"/>
</ant>
</target>
</project>subbuild.xml
<?xml version="1.0"?>
<project name="subbuild">
<path id="globalpathid">
<pathelement location="my/sub/location"/>
</path>
<target name="test">
<path id="localtotargetpathid">
<pathelement location="my/target/location"/>
</path>
<property name="p.localtotargetpathid" refid="localtotargetpathid" />
<echo>p.localtotargetpathid: ${p.localtotargetpathid}</echo>
<property name="p.globalpathid" refid="globalpathid" />
<echo>p.globalpathid: ${p.globalpathid}</echo>
</target>
</project>控制台日志如下:
$ ant
Buildfile: build.xml
build:
[ant] Parent project doesn't contain any reference 'mainpath'
test:
[echo] p.localtotargetpathid: d:\my\target\location
[echo] p.globalpathid: d:\my\main\path
BUILD SUCCESSFUL
Total time: 0 seconds我们可以看到globalpathid已经被覆盖,但没有localtotargetpathid,这是规范中提到的行为。
我还是不能解释第一条信息...
发布于 2011-04-07 21:52:17
我认为您在refid path.app.src的子构建文件中有一个不完整的声明。
<path id="subpath.app.src">
<pathelement location=".. some locations .."/>
<path refid="path.app.src" /> <=======
</path>它不应该有第二个嵌套的path元素(),因为没有关联的位置。你编写主构建文件的方式覆盖了//除了//这个refid之外的任何引用,对我来说很好。
https://stackoverflow.com/questions/1126342
复制相似问题