Задать спецификацию c Maven для последней версии во время локальной разработки - PullRequest
0 голосов
/ 12 февраля 2020

Учитывая, что у меня есть следующая зависимость для моего многомодульного CI:

<groupId>my_group</groupId>
<artifactId>artifact1</artifactId>
<version>2.0.0-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>my_group</groupId>
        <artifactId>artifact2</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

На моем CI я хочу скомпилировать артефакт 2. Однако на моем dev я редко касаюсь его, и с момента компиляции этого Артефакт требует некоторых внешних зависимостей и значительного времени, я бы очень хотел пропустить его и использовать любой существующий последний выпуск.

До сих пор у меня был профиль, который отменял версию artifact2 с помощью RELEASE, например: use-release-artifact2 my_group artifact2 RELEASE

и локально я запускаю с -Puse-release-artifact2. Отлично.

Теперь maven3 не поддерживает псевдо-версии RELEASE и LATEST, и я пытаюсь найти решение, которое:

  1. не оставляет измененные файлы pom. xml на определяется как «измененный» git. в прошлом это приводило к тому, что разработчик непреднамеренно совершал неправильный файл. по той же причине я не могу просто добавить игнорирование в этот файл.
  2. не требует от разработчика соблюдения графика выпуска и замены параметров в строке «mvn clean install ...».
  3. не go через длинное разрешение, как это делают диапазоны версий.
  4. не заставляет меня фиксировать версию при каждом выпуске (кроме того, плагин версии не поддерживает переход к версии "next-1 "afaik).

есть идеи?


Уточнение:

Я вообще не хочу запускать сборку artifcat2 , Более того, artifact2 недоступен в 2.0.0-SNAPSHOT в хранилище, поскольку он еще не выпущен. Я действительно хочу взять последний выпуск (например, 1.5.7) из репозитория, чтобы скомпилировать артефакт1 против этого.

1 Ответ

0 голосов
/ 20 февраля 2020

Мой совет будет следующим:

  1. Проверьте весь многомодульный проект.
  2. Создайте все модули один раз.
  3. Затем используйте Отметьте ( как описано здесь ), чтобы создавать артефакт 1 только для каждой последующей сборки.

Таким образом, первая сборка займет некоторое время, но после этого вам нужно только построить артефакт1 и SNAPSHOT. for artifact2 будет легко доступен в вашем локальном репозитории.

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

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