[ANT] Свойство и Classpathref наследуются в «foreach» - PullRequest
1 голос
/ 20 июля 2011

Чтобы объяснить это кратко, вот пример:

В build.xml импортируется local-db.xml.И в local-db.xml есть цель с именем «разминка», которая вызывает одну цель третьего файла - local-gr.xml с помощью задачи.

Все общие свойства и определения пути к классам импортируются иустановить в build.xml.

в project.properties:

dest-dir=./destination

в build.xml:

<path id="gr-classpath"> ... </path>
<import file="local-db.xml" />

в local-db.xml:

<ant antfile="local-gr.xml" target="deploy" inheritAll="true" inheritRefs="true" />

В local-gr.xml есть две цели, подобные этой:

<target name="deploy">
    <tar ....../>
    <foreach list="${list1}" delimiter="," parallel="true" trim="true" param="item" target="deploy-single" />
</target>

<target name="deploy-single">
    something using property ${dest-dir} and path "gr-classpath"
</target>

Теперь вот проблема:

Свойство $ {dest-dir} ипуть "gr-classpath" может быть использован в "deploy", потому что я установил inheritAll и inheritRefs, но его нельзя использовать непосредственно в "deploy-single".«Наследовать» не, когда цель вызывается foreach?

Мне удалось передать $ {dest-dir} в «deploy-single» с помощью, но я не нашел никакого способапередать classpathref "gr-classpath" в "deploy-single".

То, что я сделал, чтобы обойти это, это снова потребовал в "deploy-single", но мне это совсем не нравится.

Почему это происходит?Что я могу сделать, чтобы сделать его более элегантным?

1 Ответ

4 голосов
/ 20 июля 2011

Задача ant-contrib foreach по умолчанию не распространяет все свойства и ссылки на свою цель. Но у него есть атрибуты inheritall и inheritrefs, которые можно использовать для этого.

<foreach list="${list1}" delimiter="," parallel="true" trim="true"
         param="item" target="deploy-single"
         inheritall="true" inheritrefs="true"
/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...