Я пытаюсь разрешить зависимости от СНИМКА, к которым добавляют метку времени, с Ivy.
Среда является Муравьем + Ivy 1.2.0 + Archiva. Сам Archiva заполняется от сборок Maven2. Ivy только используется для разрешения зависимостей (от сингла, не проекта Maven2).
Как Ivy может быть настроена для корректного разрешения артефактов, к которым добавляют метку времени, от Archiva или m2 репозитория?
Для ссылки моя текущая конфигурация:
ivysettings.xml выглядит подобным:
<ivysettings>
<settings defaultResolver="archiva-chain"/>
<resolvers>
<chain name="archiva-chain" changingPattern=".*SNAPSHOT" checkmodified="true">
<ibiblio name="archiva-internal"
m2compatible="true"
usepoms="true"
pattern="[organization]/[module]/[revision]/[artifact]-[revision].[ext]"
root="http://host:port/archiva/repository/internal"/>
<ibiblio name="archiva-deploy"
m2compatible="true"
usepoms="true"
pattern="[organization]/[module]/[revision]/[artifact]-[revision].[ext]"
root="http://host:port/archiva/repository/deploy"/>
<ibiblio name="archiva-snapshots"
m2compatible="true"
usepoms="true"
pattern="[organization]/[module]/[revision]/[artifact]-[revision].[ext]"
root="http://host:port/archiva/repository/snapshots"/>
</chain>
</resolvers>
</ivysettings>
Зависимости ivy.xml просты:
<ivy-module version="2.0">
<info organisation="com.myorg" module="myapp"/>
<dependencies>
<dependency org="com.myorg" name="myartifact" rev="1.8.0-SNAPSHOT" changing="true"/>
</dependencies>
</ivy-module>
Плющ не пытается разрешить артефакт с меткой времени. Например.
[ivy:retrieve] :: problems summary ::
[ivy:retrieve] :::: WARNINGS
[ivy:retrieve] module not found: com.myorg#myartifact;1.8.0-SNAPSHOT
[ivy:retrieve] ==== archiva-internal: tried
[ivy:retrieve] -- artifact com.myorg#myartifact;1.8.0-SNAPSHOT!myartifact.jar:
[ivy:retrieve] http://host:port/archiva/repository/internal/com.myorg/myartifact/1.8.0-SNAPSHOT/myartifact-1.8.0-SNAPSHOT.jar
[ivy:retrieve] ==== archiva-deploy: tried
[ivy:retrieve] -- artifact com.myorg#myartifact;1.8.0-SNAPSHOT!myartifact.jar:
[ivy:retrieve] http://host:port/archiva/repository/deploy/com.myorg/myartifact/1.8.0-SNAPSHOT/myartifact-1.8.0-SNAPSHOT.jar
[ivy:retrieve] ==== archiva-snapshots: tried
[ivy:retrieve] -- artifact com.myorg#myartifact;1.8.0-SNAPSHOT!myartifact.jar:
[ivy:retrieve] http://host:port/archiva/repository/snapshots/com.myorg/myartifact/1.8.0-SNAPSHOT/myartifact-1.8.0-SNAPSHOT.jar
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :: UNRESOLVED DEPENDENCIES ::
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :: com.myorg#myartifact;1.8.0-SNAPSHOT: not found
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]
[ivy:retrieve]
[ivy:retrieve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS
В snapshots/com/myorg/myartifact существует maven-metadata.xml:
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>com.myorg</groupId>
<artifactId>myartifact</artifactId>
<versioning>
<latest>1.8.0-SNAPSHOT</latest>
<versions>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.2-SNAPSHOT</version>
<version>1.6.1-SNAPSHOT</version>
<version>1.8.0-SNAPSHOT</version>
</versions>
<lastUpdated>20100303003206</lastUpdated>
</versioning>
</metadata>
maven-metadata.xml в snapshots/com/myorg/myartifact/1.8.0-SNAPSHOT:
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>com.myorg</groupId>
<artifactId>myartifact</artifactId>
<version>1.8.0-SNAPSHOT</version>
<versioning>
<snapshot>
<buildNumber>7</buildNumber>
<timestamp>20100303.003206</timestamp>
</snapshot>
<lastUpdated>20100303003206</lastUpdated>
</versioning>
</metadata>
Не все, что полезный, но для полноты, файлов в каталоге snapshots/com/myorg/myartifact/1.8.0-SNAPSHOT для снимка, на который ссылаются:
-rw-r--r-- 1 archiva archiva 240670 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7.jar
-rw-r--r-- 1 archiva archiva 32 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7.jar.md5
-rw-r--r-- 1 archiva archiva 40 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7.jar.sha1
-rw-r--r-- 1 archiva archiva 4068 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7.pom
-rw-r--r-- 1 archiva archiva 32 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7.pom.md5
-rw-r--r-- 1 archiva archiva 40 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7.pom.sha1
-rw-r--r-- 1 archiva archiva 180821 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7-sources.jar
-rw-r--r-- 1 archiva archiva 32 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7-sources.jar.md5
-rw-r--r-- 1 archiva archiva 40 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7-sources.jar.sha1
Ivy поддерживает разрешение снимков с отметками времени, но со следующим ограничением: указанный шаблон на вашем распознавателе ibiblio должен заканчиваться на:
[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]
Это не так в настройки, поэтому Айви не будет пытаться найти моментальный снимок с отметкой времени. Обновление вашего шаблона до этого должно решить вашу проблему; обновите определение вашего хранилища архивных снимков на:
<ibiblio name="archiva-snapshots"
m2compatible="true"
usepoms="true"
pattern="[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"
root="http://host:port/archiva/repository/snapshots"/>
Примечание: обратите внимание на 's' в [organization] вместо 'z'.
Маартен