2015-03-09 1 views
3

J'ai récemment ajouté cette dépendance à pom.xmlConstruire L'échec dans Jenkins, trouvé les ressources en double

<dependency> 
    <groupId>com.jayway.restassured</groupId> 
    <artifactId>rest-assured</artifactId> 
    <version>2.4.0</version> 
</dependency> 

Mon construit échouent dans le message jenkins d'erreur suivant:

[WARNING] Found duplicate resources in [org.codehaus.groovy:groovy:2.3.7,org.codehaus.groovy:groovy-json:2.3.7,org.codehaus.groovy:groovy-xml:2.3.7] : 
[WARNING] META-INF/groovy-release-info.properties 
[JENKINS] Archiving disabled 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 5:37.485s 
[INFO] Finished at: Mon Mar 09 10:10:49 PDT 2015 
[INFO] Final Memory: 46M/381M 
[INFO] ------------------------------------------------------------------------ 
[JENKINS] Archiving disabled 
Waiting for Jenkins to finish collecting data 
[ERROR] Failed to execute goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.4:check (default) on project LightmileTest: Found duplicate classes/resources -> [Help 1] 

Répondre

1

Il est probable que votre nouvelle dépendance échoue sur ce test que vous faites via Maven (duplicate-finder-plugin). Exécutez le contrôle manuel de la ligne de commande (au niveau du fichier POM) pour savoir quelles sont les classes incriminées:

mvn com.ning.maven.plugins:duplicate-finder-maven-plugin:1.0.4:check 

Ensuite, vous pouvez soit supprimer la dépendance ou configurer le plugin Maven pour les ignorer. (config here)

+0

Je n'utilise pas le plugin duplicate-finder dans mon pom. Mais je reçois encore un échec de construction à cause de cela? – user3443193

+0

La dernière ligne de votre console montre que ce plugin de recherche de doublons est en cours d'exécution et provoque l'échec de votre build. Si vous ne l'utilisez pas intentionnellement, supprimez-le et voyez si cela fonctionne. –

0

Contexte/Détails

J'ai eu un problème similaire et cela m'a jeté pour une boucle pendant un certain temps et j'ai commencé à remettre en question ma connaissance Maven et a fait quelques recherches. Si vous voulez en savoir plus sur duplicata finder, vous pouvez lire le readme sur leur github: https://github.com/ning/maven-duplicate-finder-plugin

Pour le projet sur lequel j'étais, j'ai déterminé que je pouvais faire exclues dans les dépendances ou ajouter des exceptions au duplicateur. J'ai vu les deux dans mon projet et je me demandais quand il était approprié de faire quoi.

Le message du plugin aide à identifier l'emplacement de la duplication. Vous verrez normalement ceci lorsque vous essayez d'ajouter de nouvelles dépendances. Lorsque vous voyez cela, il existe deux options, soit exclure des choses des dépendances, ou créer des exceptions dans votre configuration com.ning.maven.plugins:duplicate-finder-maven-plugin.

Résumé/Conclusion

Ajout d'une exception, tout ne tient pas compte du problème. Donc, la manière la plus propre est d'ajouter les exclus dans les dépendances. De cette façon, vous obtenez exactement ce que vous attendez/désirez. De plus, descendre sur la route des exceptions ne ferait qu'ajouter une tonne de travail supplémentaire qui n'est pas vraiment utile. Donc l'intention du plugin est de vous aider à identifier les duplications, puis essayez de les gérer via les exclusions dans les dépendances.

Exemple de Comment faire exclure

Dans votre exemple/cas, une des options suivantes devrait fonctionner pour vous:

<dependency> 
    <groupId>com.jayway.restassured</groupId> 
    <artifactId>rest-assured</artifactId> 
    <version>2.4.0</version> 
    <exclusions> 
     <exclusion> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy-json</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

ou

<dependency> 
    <groupId>com.jayway.restassured</groupId> 
    <artifactId>rest-assured</artifactId> 
    <version>2.4.0</version> 
    <exclusions> 
     <exclusion> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
0

Qu'est-ce que vous pouvez faire est de suivre la règle de portée, ce qui signifie que, dépendances distinctes en fonction de leur portée, comme dans votre cas, reste assurer d utilisé pour les tests, pourquoi ne pas le mettre sous le cadre d'un test:

<scope>test</scope> 

secondaire, ce que je fais habituellement exécute exactement les mêmes commandes de Jenkins sur ma machine locale et habituellement cela aide, de vous erreur log Je pense que ce n'est pas rassurant lié, alors s'il vous plaît essayez d'exécuter l'objectif MVN qui est sur le côté Jenkins localement et assurez-vous que vous avez la même erreur. Sinon, il peut s'agir d'une configuration différente de maven par exemple via settings.xml dans la machine Jenkins.