Ответ 1
Да, вы можете. Любая версия, находящаяся в ваших хранилищах maven, может использоваться. Я столкнулся с некоторыми проблемами, когда трассивные зависимости были запущены с версией. То, где mvn dependency:tree
пригодится.
Есть ли способ заставить Maven загрузить определенную версию моментального снимка зависимости? Я знаю, что для определения такой зависимости будет загружен последний доступный снимок:
<dependency>
<groupId>groupid</groupId>
<artifactId>artifact-id</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
Можно ли указать конкретную версию моментального снимка? (например, artifact-id-1.0.0-20090610.041042-5
). Это было бы полезно, если сборка снимков головы сломала что-то, и стабильная версия зависимостей еще должна быть официально выпущена.
Да, вы можете. Любая версия, находящаяся в ваших хранилищах maven, может использоваться. Я столкнулся с некоторыми проблемами, когда трассивные зависимости были запущены с версией. То, где mvn dependency:tree
пригодится.
Чтобы использовать конкретную версию зависимостей моментального снимка, артефакт, на который ссылается, должен быть установлен/развернут с уникальным номером версии моментального снимка. См. Элемент 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 об этой функции (кроме того, вы можете прочитать здесь несколько аргументов против использования уникальных номеров версий моментальных снимков).
Используйте плагин версий Maven
http://mojohaus.org/versions-maven-plugin/examples/lock-snapshots.html
и
http://mojohaus.org/versions-maven-plugin/examples/unlock-snapshots.html
AFAIK SNAPSHOT всегда ссылается на последнюю сборку, и нет никакой зависимости от конкретной версии.
Чтобы обойти эту проблему, вы можете переиздать точную версию, на которую хотите зависеть, в своем собственном репозитории maven и назначить ей определенную версию.