Подтвердить что ты не робот

Специфическая для Maven зависимость от моментального снимка

Есть ли способ заставить Maven загрузить определенную версию моментального снимка зависимости? Я знаю, что для определения такой зависимости будет загружен последний доступный снимок:

<dependency>
<groupId>groupid</groupId>
<artifactId>artifact-id</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>

Можно ли указать конкретную версию моментального снимка? (например, artifact-id-1.0.0-20090610.041042-5). Это было бы полезно, если сборка снимков головы сломала что-то, и стабильная версия зависимостей еще должна быть официально выпущена.

4b9b3361

Ответ 1

Да, вы можете. Любая версия, находящаяся в ваших хранилищах maven, может использоваться. Я столкнулся с некоторыми проблемами, когда трассивные зависимости были запущены с версией. То, где mvn dependency:tree пригодится.

Ответ 2

Чтобы использовать конкретную версию зависимостей моментального снимка, артефакт, на который ссылается, должен быть установлен/развернут с уникальным номером версии моментального снимка. См. Элемент uniqueVersion в Ссылка/репозиторий POM. В этом случае вы можете ссылаться на него так:

...
<dependency>
<groupId>groupid</groupId>
<artifactId>artifact-id</artifactId>
<version>1.0.0-20090610.041042-5</version>
</dependency>
...

Серверы менеджера репозитория Maven могут иметь дополнительные связанные функции, такие как переопределение параметра pom.xml uniqueVersion. Например, см. Artifactory User Guide об этой функции (кроме того, вы можете прочитать здесь несколько аргументов против использования уникальных номеров версий моментальных снимков).

Ответ 4

AFAIK SNAPSHOT всегда ссылается на последнюю сборку, и нет никакой зависимости от конкретной версии.

Чтобы обойти эту проблему, вы можете переиздать точную версию, на которую хотите зависеть, в своем собственном репозитории maven и назначить ей определенную версию.