не может перезаписать ссылку с помощью задачи муравья, используя вложенный элемент ссылки - PullRequest
1 голос
/ 14 июля 2009

У меня есть основной файл сборки с объявлением пути

<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> с вложенным должен переписать path.app.src в subbuild.xml.

Но я получаю сообщение об ошибке: subbuild.xml: xx: Ссылка path.app.src не найдена.

Я что-то не так делаю? это ошибка в муравье?

Я использую Apache Ant версии 1.7.0, скомпилированную 13 декабря 2006 года

Спасибо, Лайонел

Ответы [ 2 ]

1 голос
/ 15 июля 2009

На самом деле, похоже, что сейчас он ведет себя правильно, но я не могу объяснить, что я сделал неправильно в первый раз.

вот пример кода: 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, который является именем, упомянутым в спецификации.

все же я не могу объяснить первое сообщение ...

0 голосов
/ 07 апреля 2011

Я думаю, что у вас есть неполное объявление здесь, в файле subbuild refid path.app.src.

<path id="subpath.app.src">
  <pathelement location=".. some locations .."/>
  <path refid="path.app.src" />   <=======
</path>

У него не должно быть 2-го вложенного элемента path (), поскольку с ним не связано ни одно местоположение. То, как вы написали основной файл сборки для перезаписи без ссылок // кроме // этого refid, выглядит хорошо для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...