Подтвердить что ты не робот

Внешние учетные данные SCM с Maven

Есть ли способ для экстернализации моих учетных данных SCM, чтобы они не были сохранены в POM проекта? Проблема заключается в том, что если они содержатся в проекте POM, они будут видны всем при развертывании проекта.

4b9b3361

Ответ 1

Это можно сделать для многих поставщиков SCM, я предполагаю Subversion как реализацию на основе вашего тега.

Вы можете определить свои настройки Subversion в $user.home/.scm/svn-settings.xml(или [maven home]/conf/.scm/svn-settings.xml, хотя это означает, что они все еще будут видны пользователям системы)

В этом файле вы можете установить свое имя пользователя и пароль для сервера Subversion. Содержимое файла должно выглядеть следующим образом:

<svn-settings>
  <user>[svn user]</user>
  <password>[svn password]</password>
</svn-settings>

В этом файле конфигурации вы можете определить некоторые другие свойства. Более подробную информацию см. В разделе "Конфигурация поставщика" Страница Subversion SCM.

Другие провайдеры SCM имеют аналогичный подход, например, в CVS параметры хранятся в cvs-settings.xml в том же месте (папка .scm), см. Страница CVS SCM для деталей.

Ответ 2

Для некоторых поставщиков SCM вы можете указать свои учетные данные в разделе <servers> settings.xml. В качестве <id> используйте доменное имя вашего репозитория. Это работает для меня с меркуриальным. SubVersion также работает.

Например, если мой pom.xml содержит:

<scm>
  <connection>scm:hg:http://jukito.googlecode.com/hg/</connection>
  <developerConnection>scm:hg:https://jukito.googlecode.com/hg/</developerConnection>
  <url>http://code.google.com/p/jukito/source/browse/</url>
</scm>

Затем я могу указать свои учетные данные в settings.xml как таковые:

<server>
  <id>jukito.googlecode.com</id>
  <username>philippe.beaudoin</username>
  <password>1234567890ABC</password>
</server>

Ответ 3

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

Мотивация

Иногда случается так, что один и тот же сервер используется для нескольких целей, для чего требуются разные учетные данные пользователя. Например, он используется для размещения репозитория Maven, управляемого Nexus, а также SVN-сервера, который имеет разные учетные данные для одного и того же пользователя. В таких случаях должно быть несколько записей <server> с теми же id и username, но разными password. Это, однако, нецелесообразно.

Решение

Плагин релиза Maven поддерживает флаги username и password, которые могут предоставляться как часть команд release:prepare и release:perform. Значения для username и password должны соответствовать соответствующим учетным данным SVN.

mvn release:prepare -Dusername=[username] -Dpassword=[password] 

Ответ 4

Мне удалось заставить это работать, используя приведенное выше решение, то есть добавив новую конфигурацию сервера в мои settings.xml и указав имя домена как id.

<server>
  <id>domain.name:port</id>
  <username>[username]</username>
  <password>[password]</password>
</server>

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

Вы не можете использовать следующее в своем $user.home/.scm/svn-settings.xm, поскольку это неверно! В <svn-settings> нет таких элементов, как <user> и <password> (как указано здесь)

<svn-settings>
  <user>[svn user]</user>
  <password>[svn password]</password>
</svn-settings>