首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用嵌套引用元素覆盖ant任务的引用

无法使用嵌套引用元素覆盖ant任务的引用
EN

Stack Overflow用户
提问于 2009-07-14 15:53:44
回答 2查看 2K关注 0票数 1

我有一个带有路径声明的主构建文件

代码语言:javascript
复制
<path id="path.app.src">
  <pathelement location="myfolder/src"/>
</path>

然后,我使用<ant>调用子文件中的任务

代码语言:javascript
复制
<ant antfile="subbuild.xml" inheritAll="false" inheritRefs="false">
    <reference refid="path.app.src"/>
</ant>        

在subbuild.xml中,我有:

代码语言:javascript
复制
<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版

谢谢,莱昂内尔

EN

回答 2

Stack Overflow用户

发布于 2009-07-15 04:36:55

事实上,它现在似乎有正确的行为,但我不能解释我第一次做错了什么。

以下是代码示例: build.xml

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?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>

控制台日志如下:

代码语言:javascript
复制
$ 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,这是规范中提到的行为。

我还是不能解释第一条信息...

票数 1
EN

Stack Overflow用户

发布于 2011-04-07 21:52:17

我认为您在refid path.app.src的子构建文件中有一个不完整的声明。

代码语言:javascript
复制
<path id="subpath.app.src">
  <pathelement location=".. some locations .."/>
  <path refid="path.app.src" />   <=======
</path>

它不应该有第二个嵌套的path元素(),因为没有关联的位置。你编写主构建文件的方式覆盖了//除了//这个refid之外的任何引用,对我来说很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1126342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档