Comment configurer pom.xml le fichier à utiliser Nexus gestionnaire de Référentiel
Je suis en utilisant Redhat
, java 1.7
, maven 3.2.5
, jenkins 1.6
,git version 2.0.5
et nexus-2.12.0-01
J'ai créé un Local Nexus Repository
pour mon développement à l'interne.
Maintenant, Ce que je suis en train de faire est de construire maven
projet à l'aide de jenkins
avec Nexus Repository Manger Oss
.
Je suis en mesure de construire mon projet sans Nexus Repository Manger Oss
.
Note : je suis à l'aide de parent pom
depuis que j'ai des sous projets.
Ci-dessous sont les étapes que j'ai suivi.
-
Installé
Nexus Repository Manger Oss
. Il est en place et en cours d'exécution
voici capture d'écran.
-
Installé ojdbc5 pot dans nexus référentiel
- Apporté les modifications nécessaires dans setting.xml fichier de .m2 dossier
ici le contenu de setting.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">
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://maven.apache.org</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://maven.apache.org</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<servers>
<server>
<id>releases</id>
<username>deployment</username>
<password>deployment123</password>
</server>
<server>
<id>snapshots</id>
<username>deployment</username>
<password>deployment123</password>
</server>
</servers>
</settings>
- Ajouté les détails de nexus référentiel dans mon
pom.xml
parent pom.xml
contenu
HTML:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>parent</groupId>
<artifactId>A</artifactId>
<packaging>pom</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Maven Webapp</name>
<!--url>http://maven.apache.org</url-->
<distributionManagement>
<repository>
<id>releases</id>
<url>http://localhost:8081/nexus/content/repositories/thirdparty/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc5</artifactId>
<version>11.2.0.1</version>
</dependency>
</dependencies>
<modules>
<module>subModule1</module>
<module>subModule2</module>
</modules>
</project>
subModule1 de l'pom.xml
HTML:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.a</groupId>
<artifactId>a</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Maven Webapp</name>
<distributionManagement>
<repository>
<id>releases</id>
<!-- CHANGE HERE by your team nexus server -->
<url>http://localhost:8081/nexus/content/repositories/thirdparty/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<!-- CHANGE HERE by your team nexus server -->
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
<dependencies>
//dependecies are defined here
<dependencies>
Dans subModule1 et subModule2 j'ai ajouté le distributionManagement
section.
Mais quand je construis mon projet, j'obtiens l'erreur ci-dessous.
[ERREUR] Échec de l'exécution de l'objectif du projet submodule1: ne Peut pas
résoudre les dépendances de projet submodule1:la guerre:1.0-SNAPSHOT: Échec
trouver com.oracle:ojdbc5 jar:11.2.0.1 dans
https://repo.maven.apache.org/maven2 a été mis en cache dans le local
référentiel, la résolution ne sera pas reattempted jusqu'à ce que la mise à jour
l'intervalle de la centrale s'est écoulé ou les mises à jour sont forcé -> [Aide 1]
Je comprends l'erreur est causée par le com.oracle:ojdbc5:jar:11.2.0.1
pot de dépendance n'étant pas résolu.
Mais je suis surpris de voir pourquoi il n'est pas ramasser mon nexus référentiel.
Ai-je manqué aucune configuration, ou en suis-je dans un mauvais sens?
Comment puis-je utiliser la connexion locale référentiel pour mes projets?
Vous devez vous connecter pour publier un commentaire.
Dans votre settings.xml, habituellement dans votre ~/.m2/directory vous devez spécifier votre connexion locale. Vous obtenez seulement maven central par défaut.
Vous pouvez ajouter autant de référentiel d'éléments que vous le souhaitez.
Assurez-vous que le profil est actif, au bas de votre settings.xml
Aussi, vous serez à gauche avec un tampon dans votre ~/.m2/repository/com/oracle ... le dossier. Je fais toujours un rm-r ~/.m2/repository/com/oracle pour le forcer à télécharger à partir de la télécommande repo.
Votre settings.xml ne pas correctement remplacer la centrale de configuration du référentiel. La bonne installation peut être trouvé dans la la documentation.
Il y a aussi des exemple de projets disponibles, tout prêt à aller et le eval guide comprend un guide étape par étape.
C'est mon settings.xml fichier-
Donc, dans mon settings.xml fichier, j'ai spécifié le chemin d'accès de mon dépôt local et aussi, au fond, j'ai choisi mon profil actif comme nexus. À l'intérieur de la nexus nœud que j'ai précisé que mon hébergés localement nexus référentiel du chemin.
Et, je n'ai pas précisé toutes les URL dans mes pom.xml
Lorsque le projet est construit, il télécharge le pot de l'référentiel et les conserve dans le référentiel local chemin. De cette façon, dans l'avenir, lorsque vous spécifiez cette(même) la dépendance, qu'il extrait la dépendance à partir du référentiel local plutôt que de le télécharger à nouveau à partir de la Nexus référentiel (mise en cache).
C'est de travailler pour moi, s'il vous plaît laissez-moi savoir si ma compréhension est erronée.
Aussi, Est-il un moyen dans lequel j'ai pu indiquer plus d'un URL(s) pour le nexus référentiel.
S'il vous plaît aider.