Maven с пользователем settings.xml и специфичными для проекта settings.xml - PullRequest
2 голосов
/ 12 марта 2019

У меня есть несколько проектов, которые указывают на разные внутренние репозитории. Пользователи в одном проекте могут не увидеть хранилище в другом проекте, поэтому мне нужен конкретный проект settings.xml для каждого проекта.

Создание настроек Maven для конкретного проекта означает, что я могу сделать это, создав MVN_ROOT/.mvn/maven.config с

- настройки ./.mvn/settings.xml

и затем поместите информацию о хранилище внутрь MVN_ROOT/.mvn/settings.xml.

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

Однако для репозиториев требуется проверка, которая требует, чтобы settings.xml содержал что-то вроде

...
<server>
  <id>repo-proj-1</id>
  <username>me</username>
  <password>secret</password>
</server>
<server>
  <id>repo-proj-2</id>
  <username>my.name</username>
  <password>secure</password>
</server>
...

Очевидно, я не хочу помещать эту информацию в репозиторий git. ~/.m2/settings.xml является очевидным местом для размещения этой информации. Тем не менее, похоже, что у меня может быть только один файл настроек пользователя, так как мои данные для входа не собираются при попытке собрать.

Есть ли способ использовать оба файла настроек?

Это должно работать на Mac, Linux и Windows, поэтому что-то вроде <xs:include>~/.m2/settings.xml</xs:include> (включая XML, возможно, не правильный синтаксис) не будет работать, так как ~/.m2 обычно не является правильным расположением в Windows.

Мы используем Maven 3, и если требуется определенная последняя версия, мы можем потребовать от пользователей обновления до этой версии.

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Должен быть центральный репозиторий, содержащий SNAPSHOT, и другой, содержащий релизы, и группу в менеджере репозитория, которая объединяет их для использования.Это должно быть настроено в settings.xml, расположенном либо в домашнем каталоге Users, либо в конфигурации вашего CI-сервера.

Развертывание в репозитории должно выполняться только сервером CI, а не разработчиком.

На сервере CI необходимо правильно настроить учетные данные, которые будут размещаться на сервере CI (Jenkins: хранилище учетных данных) и т. д.

Если вам нужно отдельное settings.xml для проекта, это проблема проектирования в вашей настройке ... и вызовет много проблем.

Разделение различных проектов является основной вещьюв репозитории Maven, который называется координата, который представляет собой комбинацию groupId и artifactId plus version.

В общем случае settings.xml должен быть расположен только в домашнем каталоге пользователей, который при необходимости содержит учетные данные пользователей (как уже упоминалосьв сочетании с шифрованием).

1 голос
/ 12 марта 2019

Как насчет обработки секретов как переменных среды?

<server>
  <id>repo-proj-2</id>
  <username>${user}</username>
  <password>${pass}</password>
</server>

Затем вы можете установить их с помощью инструмента сборки:

mvn -s ./build/settings.xml -Duser=xxx -Dpass=xxx clean install
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...