Вывод учетных данных SCM с помощью Maven - PullRequest
33 голосов
/ 10 августа 2009

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

Ответы [ 4 ]

59 голосов
/ 25 января 2011

Для некоторых поставщиков SCM вы можете указать свои учетные данные в <servers> разделе settings.xml. В качестве <id> используйте доменное имя вашего хранилища. Это работает для меня с Mercurial. 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>
20 голосов
/ 06 марта 2012

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

Решение

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

mvn release:prepare -Dusername=[username] -Dpassword=[password] 
6 голосов
/ 10 августа 2009

Это может быть сделано для многих поставщиков 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 .

3 голосов
/ 31 января 2013

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

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

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

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

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