Какая польза от точки расширения Ant, если / только атрибуты? - PullRequest
6 голосов
/ 17 марта 2010

Когда вы определяете точку расширения в файле компоновки Ant, ее можно условно использовать с помощью атрибута if или never. На цели, если / если не препятствуют выполнению ее задач. Но у точки расширения нет задач для условного запуска, так что же делает условие? Моя мысль (которая оказалась неправильной в Ant 1.8.0) состоит в том, что это предотвратит выполнение любых задач, которые расширяют точку расширения. Вот пример сценария сборки, показывающий проблему:

<project name = "ext-test"
    default   = "main">

  <property name = "do.it" value = "false" />

  <extension-point name = "init"/>
  <extension-point name = "doit" depends = "init" if = "${do.it}" />

  <target name = "extend-init" extensionOf = "init">
    <echo message = "Doing extend-init." />
  </target>

  <target name = "extend-doit" extensionOf = "doit">
    <echo message = "Do It! (${do.it})" />
  </target>

  <target name = "main" depends = "doit">
    <echo message = "Doing main." />
  </target>

</project>

Использование команды:

ant -v

Результаты в:

Apache Ant version 1.8.0 compiled on February 1 2010
Trying the default build file: build.xml
Buildfile: /Users/bob/build.xml
Detected Java version: 1.6 in: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
Detected OS: Mac OS X
parsing buildfile /Users/bob/build.xml with URI = file:/Users/bob/build.xml
Project base dir set to: /Users/bob
parsing buildfile jar:file:/Users/bob/Documents/Development/3P-Tools/apache-ant-1.8.0/lib/ant.jar!/org/apache/tools/ant/antlib.xml with URI = jar:file:/Users/bob/Documents/Development/3P-Tools/apache-ant-1.8.0/lib/ant.jar!/org/apache/tools/ant/antlib.xml from a zip file
Build sequence for target(s) `main' is [extend-init, init, extend-doit, doit, main]
Complete build sequence is [extend-init, init, extend-doit, doit, main, ]

extend-init:
     [echo] Doing extend-init.

init:

extend-doit:
     [echo] Do It! (false)

doit:
Skipped because property 'false' not set.

main:
     [echo] Doing main.

BUILD SUCCESSFUL
Total time: 0 seconds

Вы заметите, что целевой extension-doit выполнен, но сама точка расширения пропущена. Поскольку у точки расширения нет задач, что именно было пропущено? Любые цели, которые зависят от точки расширения, все еще выполняются, поскольку пропущенная цель является успешной. Какое значение имеют атрибуты if /лачки в точке расширения?

1 Ответ

0 голосов
/ 11 апреля 2010

Я предполагаю, что нет фактического использования для них, они, вероятно, появляются как атрибуты, потому что точка расширения расширяет цель (связанные с java классы делают).

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