Как вы привязываете версии артефактов Maven в диспетчере репозиториев Nexus?


Я строю против различных артефактов Lucene и Solr Maven из репозитория Maven Apache, размещенного в диспетчере репозиториев Nexus. Артефакты имеют версию 4.0-SNAPSHOT и обновляются ежедневно, причем старые артефакты регулярно удаляются.

Мне было интересно, как привязать артефакты к определенной дате, поэтому всякий раз, когда клиент Maven запрашивал solr-core 4.0-SNAPSHOT, он получал ту же версию, даже если была более новая вверх по течению.

Я также хотел бы знать, как явно обновить до последняя версия 4.0-SNAPSHOT, но все еще сохраняет все предыдущие версии, которые были загружены.

В частности, репозиторий" Apache Snapshots " является хранилищем по умолчанию, которое устанавливается при установке Nexus.

2 6

2 ответа:

При развертывании моментального снимка на сервере репозитория каждое новое развертывание фактически развертывается как версия с отметкой времени и добавленным номером итератора. Если вы хотите использовать определенную версию, вы просто используете версию временной метки снимка, а не-снимок.

Например, посмотрите на https://repository.apache.org/content/groups/snapshots/org/apache/maven/artifact/maven-artifact/3.0-alpha-2-SNAPSHOT/

Вы можете использовать этот артефакт как

<groupId>org.apache.maven.artifact</groupId>
<artifactId>maven-artifact</artifactId>
<version>3.0-alpha-2-SNAPSHOT</version>

Что бы измените его каждый раз, когда развертывается новый снимок, или вы можете использовать

<groupId>org.apache.maven.artifact</groupId>
<artifactId>maven-artifact</artifactId>
<version>3.0-alpha-2-20090214.020928-1</version>

Которая останется прежней. Однако имейте в виду, что хранилище моментальных снимков не является статичным по своей природе, и эти артефакты потенциально могут полностью исчезнуть. Делайте это только в том случае, если вы используете внутренний сервер репозитория, которым вы можете управлять, и поэтому убедитесь, что эти снимки не исчезают.

Другой способ сделать это-фактически вырезать релиз и использовать его..

Вы можете использоватьversions maven plugin для привязки к определенной версии SNAPSHOT, которая действительна только до тех пор, пока снимок доступен в соответствующем репозитории. Но я бы рекомендовал использовать менеджер репозиториев и получить снимок в локальный репозиторий и работать с ними вместо этого. Что также возможно, так это получить определенный снимок и сделать из него внутренний релиз для exmaple 4.0.1-INTERNAL like и сделать его более доступным на основе этого.