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