maven -SNAPSHOT ключевое слово не заменено - PullRequest
3 голосов
/ 17 февраля 2011

У меня есть проект Maven с <packaging>jar</packaging> и <version>0.0.11-SNAPSHOT</version>. Когда я запускаю mvn clean install, он развертывает следующее в моем локальном репозитории

~ / .m2 / хранилище / ком / пример / MyProject / 0.0.11-ПАНОРАМА / Commons-0.0.11-SNAPSHOT.jar

Я ожидал, что имя сгенерированного артефакта будет заменено -SNAPSHOT на временную метку времени создания JAR, что-то вроде:

~ / .m2 / хранилище / ком / пример / MyProject / 0.0.11-ПАНОРАМА / Викисклада 0.0.11-20110217011633.jar

Почему эта замена не происходит?

Ответы [ 2 ]

5 голосов
/ 17 февраля 2011

Я перечитал вопрос, похоже, вы говорите о своей локальной машине. Я сомневаюсь, что вы можете хранить уникальную версию в локальном хранилище

см. Это: Репозиторий - обработка SNAPSHOT , там написано

При установке артефакта в локальный репозиторий во время сборки файл version.txt не обновляется. Это связано с тем, что локальное время последнего изменения этого файла используется для определения того, когда должна произойти следующая проверка.

Вместо этого файл сохраняется в таком формате, как 0,15-SNAPSHOT. При последующих попытках метка времени файловой системы в этом файле сравнивается с меткой времени файловой системы в файле version.txt, чтобы определить, что является более новым (где метка времени для version.txt обновляется только после обновления его содержимого).

Кроме того,

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


Приведенное ниже описание предназначено для частного хранилища.

В приватном репозитарии:

Вам необходимо настроить локальный репозиторий для хранения уникальных версий SNAPSHOT. AFAIK, в Artifactory и Nexus есть настройка для этого.

Смотрите здесь: http://wiki.jfrog.org/confluence/display/RTF/Local+Repositories

Вы можете выбрать между:

  • Неуникальные снимки.
  • Уникальные снимки - с уникальной отметкой времени и суффиксом номера сборки.
  • Поведение, связанное с развертыванием - Artifactory будет соблюдать политику моментальных снимков пользователя, то есть действовать как стандартное, не интеллектуальное хранилище.

Я не использовал Nexus, но, похоже, по умолчанию он хранит уникальный снимок, и вы можете определить, сколько дней вы хотите сохранить SNAPSHOT. Я не получил статью, но вы можете посмотреть http://www.sonatype.com/books/nexus-book/reference/config-sect-scheduled-services.html

Кроме того, вы можете явно указать uniqueVersion как true в блоке управления распространением. Но я думаю, что это правда по умолчанию. может дать ему шанс,

 <distributionManagement>
   ...
   <repository>     
     ...
     <uniqueVersion>true</uniqueVersion>
   </repository>
   ...
 </distributionManagement>
4 голосов
/ 17 февраля 2011

Я думаю, что то, что вы написали (заменив SNAPSHOT токен), верно, когда вы deploy храните артефакт в репозитории моментальных снимков.Но install работает (по крайней мере, для меня), как вы описали, - поэтому он не заменяет SNAPSHOT меткой времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...