Возможно ли для проекта иметь 2 версии razorgenerator.mvc?

ПРИМЕЧАНИЕ:

Этот ответ относится только к Maven 2! Указанные LATEST и RELEASE метаверсии были отброшены в Maven 3 «ради воспроизводимых построений» более 6 лет назад. Пожалуйста, обратитесь к этому решению Maven 3 .


Если вы всегда хотите использовать новейшую версию, у Maven есть два ключевых слова, которые вы можете использовать в качестве альтернативы к диапазонам версий. Вы должны использовать эти параметры с осторожностью, поскольку вы больше не контролируете используемые вами плагины / зависимости.

Когда вы зависите от плагина или зависимости, вы можете использовать значение версии ПОСЛЕДНИЕ или РЕЛИЗЫ. LATEST относится к последней выпущенной или мгновенной версии определенного артефакта, самого недавно развернутого артефакта в конкретном репозитории. RELEASE относится к последнему выпуску, отличному от моментального снимка в репозитории. В целом, не рекомендуется разрабатывать программное обеспечение, которое зависит от неспецифической версии артефакта. Если вы разрабатываете программное обеспечение, вы можете использовать RELEASE или LATEST в качестве удобства, чтобы вам не приходилось обновлять номера версий при выпуске новой версии сторонней библиотеки. Когда вы выпускаете программное обеспечение, вы всегда должны следить за тем, чтобы ваш проект зависел от конкретных версий, чтобы уменьшить вероятность того, что ваша сборка или ваш проект пострадали от выпуска программного обеспечения, не находящегося под вашим контролем. Используйте LATEST и RELEASE с осторожностью, если это вообще возможно.

Подробнее см. Раздел POM Syntax в книге Maven . Или см. Этот документ в Диапазоны версий зависимостей , где:

  • Квадратная скобка ([ & amp; ]) означает «закрытая» (включительно).
  • Скобка (( & amp; )) означает «открытый» (эксклюзивный).

Вот пример, иллюстрирующий различные варианты. В репозитории Maven com.foo:my-foo имеет следующие метаданные:


  com.foo
  my-foo
  2.0.0
  
    1.1.1
    
      1.0
      1.0.1
      1.1
      1.1.1
      2.0.0
    
    20090722140000
  

Если требуется зависимость от этого артефакта, у вас есть следующие параметры (другие диапазоны версии можно указать, просто показывая соответствующие здесь):

Объявить точную версию (всегда будет разрешено 1.0.1):

[1.0.1]

Объявить явный version (всегда будет разрешаться до 1.0.1, если не произойдет столкновение, когда Maven выберет подходящую версию):

1.0.1

Объявить диапазон версий для всех 1.x (в настоящее время будет разрешено 1.1.1 ):

[1.0.0,2.0.0)

Объявить диапазон версий с открытым концом (будет разрешен до 2.0.0):

[1.0.0,)

Объявить версию как ПОСЛЕДНЕЕ (разрешить до 2.0.0 ) (удалено из maven 3.x)

LATEST

Объявить версию как RELEASE (будет разрешена к 1.1.1) (удалена из maven 3.x):

RELEASE

Обратите внимание, что по умолчанию ваши собственные развертывания будут обновлять «последнюю» запись в метаданных Maven, но для обновления записи «release» вам необходимо активировать " релиз-профиль "из Maven super POM . Вы можете сделать это с помощью «-Prelease-profile» или «-DperformRelease = true»


Следует подчеркнуть, что любой подход, который позволяет Maven выбирать версии зависимостей (ПОСЛЕДНИЙ, РЕЛИЗ и версия диапазоны) могут оставить вас открытыми для создания проблем времени, так как более поздние версии могут иметь другое поведение (например, плагин зависимостей ранее переключил значение по умолчанию от true на false, с запутанными результатами).

Поэтому вообще хорошая идея определить точные версии в выпусках. Как указывает ответ Тима , maven-versions-plugin - удобный инструмент для обновления версий зависимостей, особенно версии : использование последних версий и версии: use-latest-releases .

-1
задан satniuq98 25 March 2019 в 11:17
поделиться