2017-08-26 1 views
0

J'ai un projet avec un pom.xml qui comprend une dépendance simple:Pourquoi la dépendance de mon référentiel local n'est-elle pas incluse dans Maven?

<dependency> 
    <groupId>com.somegroupid</groupId> 
    <artifactId>LocalProject</artifactId> 
    <version>1.0-SNAPSHOT</version> 
</dependency> 

Et quand je lance le projet au niveau local, tout fonctionne parfaitement. Mais quand je pousse le projet GitHub et Jenkins tente de construire automatiquement, je reçois cette erreur:

[WARNING] The POM for com.somegroupid:LocalProject:jar:1.0-SNAPSHOT is missing, no dependency information available 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 1.563 s 
[INFO] Finished at: 2017-08-26T13:19:47+02:00 
[INFO] Final Memory: 9M/31M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal on project MainProject: Could not resolve dependencies for project com.somegroupid:MainProject:war:1.0-SNAPSHOT: Could not find artifact com.somegroupid:LocalProject:jar:1.0-SNAPSHOT -> [Help 1] 

Je pense que le pot de projet ne soit pas inclus dans la construction et quand jenkins tente de le construire, il cherche dans le référentiel central et ne le trouve effectivement pas. (Comme prévu car la dépendance n'est disponible que dans mon référentiel local)

Comment puis-je m'assurer que la dépendance est incluse lors de la construction?

Répondre

1

when jenkins tries to build it looks for it in the central repository and effectively doesn't find it. (As is expected because the dependency is only available in my local repository)

Vous avez raison

En ce qui je sais que vous avez deux façons de résoudre ce problème.

1 - Solution professionnelle (mieux) Créer un repository interne avec Artifactory (j'utiliser ce) ou nexus, et déployer jar, des modules et des dépendances dans cette prise en pension. Configurez votre serveur de référentiel pour télécharger les dépendances à partir d'Internet. Configurer maven sur Jenkins pour utiliser votre serveur local de référentiel maven au lieu de https://repo.maven.apache.org/maven2/ ou autre.

Ceci est une bonne solution si vous travaillez avec une grande équipe de développeurs, vous pouvez contrôler ce que les gens utilisent et quelle version.

2 - Solution

Il suffit de mettre votre com.somegroupid: LocalProject: fichier jar dans le répertoire .m2/dépôt en serveur jenkins.

[Avis] il suffit d'utiliser cette solution si vous êtes pressé et que quelques fichiers comme des dépendances locales

+0

La première solution requiert mon serveur distant pour accéder au repository local sur mon ordinateur local? Que faire si mon ordinateur est éteint lorsque Jenkins est en construction? Et qu'en est-il des pare-feu, etc.? Ou est-ce que je regarde ça dans le mauvais sens? – Titulum

+0

La deuxième solution fonctionnera probablement, j'ai accepté votre réponse mais je ne peux pas l'appliquer maintenant car je l'ai corrigé en incluant les classes requises dans un paquet séparé dans mon projet. – Titulum