Ajout de Maven nexus repo à mon pom.XML
J'ai installé nexus sur ma machine locale. Je veux que mon fichier pom pointe vers ce repo. Comment puis-je ajouter mon référentiel personnalisé à mon pom.fichier xml?
6 réponses
À Partir De Maven-Référence Des Paramètres
Les référentiels de téléchargement et de déploiement sont définis par les éléments repositories
et distributionManagement
du POM. Cependant, certains paramètres tels que le nom d'utilisateur et le mot de passe ne doivent pas être distribués avec le pom.XML. Ce type d'informations doit exister sur le serveur de génération dans les paramètres.XML.
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
<servers>
<server>
<id>server001</id>
<username>my_login</username>
<password>my_password</password>
<privateKey>${user.home}/.ssh/id_dsa</privateKey>
<passphrase>some_passphrase</passphrase>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration></configuration>
</server>
</servers>
...
</settings>
Id: C'est L'ID du serveur (Pas de l'utilisateur à identifier) qui correspond à l'élément id du référentiel / miroir que Maven essaie de se connecter à.
Nom D'utilisateur, mot de passe: ces éléments apparaissent sous la forme d'une paire indiquant le login et le mot de passe requis pour s'authentifier auprès de ce serveur.
PrivateKey, mot de passe: Comme les deux éléments précédents, cette paire spécifie un chemin d'accès à une clé privée (par défaut est ${user.home}/.ssh/id_dsa
) et un mot de passe, si nécessaire. Les éléments mot de passe et mot de passe peuvent être externalisés à l'avenir, mais pour l'instant, ils doivent être définis en texte brut dans les paramètres.XML fichier.
FilePermissions, directoryPermissions: Lorsqu'un fichier ou un répertoire de référentiel est créé lors du déploiement, ce sont les autorisations à utiliser. Les valeurs légales de chacun sont un nombre à trois chiffres correspondant aux autorisations de fichier * nix, c'est-à-dire. 664, ou 775.
Remarque: Si vous utilisez une clé privée pour vous connecter au serveur, assurez-vous que vous omettez l'élément. Sinon, la clé sera ignoré.
Tout ce que vous devriez avoir besoin est le id
, username
et password
Le id
et URL
doit être défini dans votre pom.xml
comme ceci:
<repositories>
...
<repository>
<id>acme-nexus-releases</id>
<name>acme nexus</name>
<url>https://nexus.acme.net/content/repositories/releases</url>
</repository>
...
</repositories>
Si vous avez besoin d'un nom d'utilisateur et d'un mot de passe pour votre serveur, vous devez le chiffrer. Cryptage De Mot De Passe Maven
Tout d'abord, je peux vous recommander fortement de lire le livre Nexus. Il expliquera les avantages de l'utilisation d'un gestionnaire de référentiel Maven.
Il y a une section sur la façon de configurer votre build Maven pour utiliser Nexus:
Cela m'amène à me demander pourquoi vous modifiez votre fichier POM? Je soupçonne ce que vous voulez vraiment faire est de configurer la connexion d'un dépôt distant miroir. Ceci est fait dans votre Fichier de paramètres Maven.
Ce qui suit indique à Maven d'utiliser Nexus comme référentiel par défaut (au lieu de Maven Central)
<settings>
..
..
<mirrors>
<mirror>
<id>nexus</id>
<url>http://localhost:8081/nexus/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
C'est le comportement souhaité puisque votre référentiel Nexus est configuré pour mettre en cache les artefacts récupérés à partir de Central (ce qui est bon pour les performances de construction).
Remarque:
- le groupe de référentiels "public" peut inclure d'autres référentiels mandatés par votre instance Nexus (pas seulement Maven Central). Vous voulez probablement ce comportement, car il centralise toute la gestion du référentiel. Cela rend votre construction moins portable pour les personnes en dehors de votre organisation.
Il semble que les réponses ici ne prennent pas en charge un cas d'utilisation d'entreprise où un serveur Nexus a plusieurs utilisateurs et a une isolation (protection) basée sur le projet basée sur l'id utilisateur avec l'utilisation d'un système de construction automatisé (CI) comme Jenkins. Vous ne seriez pas en mesure de créer un Paramètres.fichier xml pour satisfaire les différents ID utilisateur nécessaires pour différents projets. Je ne suis pas sûr de savoir comment résoudre ce problème, sauf en ouvrant Nexus à un accès anonyme pour la lecture de référentiels, à moins que les projets ne puissent stocker un ID utilisateur générique spécifique au projet dans leur pom.XML.
À partir du site Apache Maven
<project>
...
<repositories>
<repository>
<id>my-internal-site</id>
<url>http://myserver/repo</url>
</repository>
</repositories>
...
</project>
" les référentiels pour le téléchargement et le déploiement sont définis par les référentiels et les éléments distributionManagement du POM. Cependant, certains paramètres tels que le nom d'utilisateur et le mot de passe ne doivent pas être distribués avec le pom.XML. Ce type d'informations doit exister sur le serveur de génération dans les paramètres.XML."- référence des paramètres du site Apache Maven
<servers>
<server>
<id>server001</id>
<username>my_login</username>
<password>my_password</password>
<privateKey>${user.home}/.ssh/id_dsa</privateKey>
<passphrase>some_passphrase</passphrase>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration></configuration>
</server>
</servers>
Si vous ne voulez pas ou si vous ne pouvez pas modifier le fichier settings.xml
, vous pouvez en créer un nouveau dans votre projet racine et appeler maven en le passant en paramètre avec le paramètre -s
:
$ mvn COMMAND ... -s settings.xml
De Maven réglage de référence , vous ne pouvez pas mettre votre nom d'utilisateur / mot de passe dans un pom.xml
Les référentiels pour le téléchargement et le déploiement sont définis par les référentiels et les éléments distributionManagement du POM. Cependant, certains paramètres tels que le nom d'utilisateur et le mot de passe ne doivent pas être distribués avec le pom.XML. Ce type d'informations doit exister sur le serveur de génération dans les paramètres.XML.
Vous pouvez d'abord ajouter un référentiel dans votre pom, puis ajoutez le nom d'utilisateur / mot de passe dans $maven_home / conf / settings.xml:
<servers>
<server>
<id>my-internal-site</id>
<username>yourUsername</username>
<password>yourPassword</password>
</server>
</servers>