web-dev-qa-db-fra.com

Externalisation des informations d'identification SCM avec Maven

Existe-t-il une méthode pour externaliser mes informations d'identification SCM afin qu'elles ne soient pas stockées dans le POM du projet? Le problème étant que s'ils sont contenus dans le POM du projet, ils seront visibles par tous lors du déploiement du projet.

33
Kingamajick

Cela peut être fait pour de nombreux fournisseurs SCM, je suppose que Subversion est l'implémentation basée sur votre balise.

Vous pouvez définir vos paramètres Subversion dans $ user.home/.scm/svn-settings.xml (ou [maven home] /conf/.scm/svn-settings.xml, bien que cela signifie qu'ils seront toujours visibles pour les utilisateurs de le système)

Dans ce fichier, vous pouvez définir votre nom d'utilisateur et votre mot de passe pour le serveur Subversion. Le contenu du fichier doit ressembler à ceci:

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

Vous pouvez définir d'autres propriétés dans ce fichier de configuration. Pour plus de détails, voir la section "Configuration du fournisseur" de page Subversion SCM .

D'autres fournisseurs SCM ont une approche similaire, par exemple dans CVS les paramètres sont stockés dans cvs-settings.xml au même emplacement (le dossier .scm), voir page CVS SCM pour plus de détails.

6
Rich Seller

Pour certains fournisseurs SCM, vous pouvez spécifier vos informations d'identification dans le <servers> section de settings.xml. En tant que <id> utilisez le nom de domaine de votre référentiel. Cela fonctionne pour moi avec Mercurial. Subversion fonctionne aussi.

Par exemple, étant donné mon pom.xml contient:

<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>

Ensuite, je peux spécifier mes informations d'identification dans settings.xml En tant que tel:

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

Je me rends compte que cette question est ancienne et que les réponses sont acceptées, mais dans un souci d'exhaustivité, je voudrais fournir l'alternative suivante, qui pourrait être préférée dans certains cas.

Motivation

Il arrive donc parfois que le même serveur soit utilisé à plusieurs fins, ce qui nécessite des informations d'identification d'utilisateur différentes. Par exemple, il est utilisé pour héberger le référentiel Maven piloté par Nexus ainsi qu'un serveur SVN qui ont des informations d'identification différentes pour le même utilisateur. Dans de tels cas, il devrait y avoir plusieurs <server> entrées avec les mêmes id et username, mais différentes password. Cependant, cela n'est pas viable.

Solution

Le plugin de publication Maven prend en charge les drapeaux username et password qui peuvent être fournis dans le cadre du release:prepare et release:perform commandes. Les valeurs de username et password doivent correspondre aux informations d'identification SVN respectives.

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

J'ai réussi à faire fonctionner cela en utilisant la solution fournie ci-dessus, c'est-à-dire en ajoutant une nouvelle configuration de serveur à mon settings.xml et en donnant le nom de domaine comme identifiant.

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

En plus de la réponse précédente, si vous spécifiez un port dans votre URL, cela doit également être inclus dans le server.id. Une autre bizarrerie que j'ai trouvée est que vous devez mettre le mot de passe entre guillemets s'il contient des caractères qui pourraient interférer avec l'appel de ligne de commande.

Vous ne pouvez pas utiliser ce qui suit dans votre $ user.home/.scm/svn-settings.xm car il n'est pas valide! Il n'y a pas d'éléments tels que <user> et <password> sous <svn-settings> (comme spécifié ici )

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