Как Apache Ivy разрешает переменные в шаблонах артефактов, представленных в файле ivysettings.xml? - PullRequest
3 голосов
/ 26 марта 2009

Если мой файл ivysettings.xml содержит:

<url name="com.springsource.repository.bundles.external">
    <ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
    <artifact pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>

И мой файл ivy.xml содержит:

<dependency org="org.junit"
            name="com.springsource.org.junit" 
            rev="4.4.0" />

С тех пор, как я запустил Айви, я могу сказать, что это разрешается до: http://repository.springsource.com/ivy/bundles/external/org.junit/com.springsource.org.junit/4.4.0/com.springsource.org.junit-sources-4.4.0.jar

Итак, разрешения идут:

[organization] => "org.junit"
[module] => "com.springsource.org.junit"
[revision] => "4.4.0"
[artifact] => "com.springsource.org.junit-sources"
[ext] => "jar"

Я вижу, как ivy разрешает [организацию], [модуль] и [ревизию] в шаблоне URL (дух), но как она разрешает [артефакт] и [ext]?

Документация для распознавателя URL , похоже, отсутствует.

1 Ответ

6 голосов
/ 27 марта 2009

Ivy сначала разрешает <ivy pattern... />, с указанием организации, модуля и ревизии, и с [artifact], закодированными как "ivy", и [ext], закодированными как "xml". Это дает URL, в данном случае:

http://repository.springsource.com/ivy/bundles/external/org.junit/com.springsource.org.junit/4.4.0/ivy-4.4.0.xml

Это файл конфигурации ivy для этого модуля. Помимо прочего, этот файл конфигурации ivy содержит информацию о других артефактах, в частности:

<artifact name="com.springsource.org.junit-sources" type="src" ext="jar"/>
<artifact name="license" type="license" ext="txt"/>

Эти два затем используются для завершения части <artifact pattern... /> - для загрузки лицензии и загрузки файла jar.

...