2014-04-21 6 views
0

J'ai un parent pom A avec les enfants pom B, C et D. Dans les B, C et D, j'ai des dépendances du même type.Suppression des dépendances maven de l'enfant pom du parent pom

-à-dire Parent Pom

<artifactID>blah</artifactID> 
    <modules> 
     <module>B</module> 
     <module>C</module> 
     <module>D</module> 
    </modules> 

enfant Pom

<dependencies> 
      <dependency> 
       . 
       . 
       <scope>test</scope> 
       <type>test-jar</type> 
      </dependency> 
    </dependencies> 

Jusqu'à présent, je l'ai essayé de modifier le plugin-infaillible et qui ne fonctionne pas en essayant d'exclure du champ d'essai pour les enfants poms .

Ma question est de savoir s'il existe un moyen d'ajouter un profil au pom parent pour exclure toutes les dépendances avec le type test-jar pour tous les poms enfants. Merci

+0

Vous cherchez un moyen le faire sans spécifier tout le monde? –

+0

Est-ce une option pour mettre un profil dans le pom enfant qui utilise les tests-jars et le pom parent n'utilise pas ce profil? –

+0

Regardez ceci ---> http://stackoverflow.com/questions/12053316/exclude-maven-dependency-for-tests – ivoruJavaBoy

Répondre

0

Depuis que vous essayez de mettre à jour les chemins dans test portée, vous pouvez accrocher le maven-surfire-plugin qui est en fait responsable de classpath de test de construction et d'exclure les dépendances indésirables ou ajouter de nouvelles. Donc, si vous voulez que cette restriction soit appliquée par module, vous pouvez ajouter ci-dessous l'entrée aux poms enfants, par ex. pour B:

<project> 
    ... 
    <artifactId>B</artifactId> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.17</version> 
     <configuration> 
      <classpathDependencyExcludes> 
      <classpathDependencyExclude>${undesired-dependency-groupId}:${undesired-dependency-artifactId}</classpathDependencyExclude> 
      </classpathDependencyExcludes> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    ... 
</project> 

Ou si vous voulez que cette restriction être héritée par tous les modules enfant, ne définissent en pom-mère comme plug-in basé sur le profil:

<project> 
    ... 
    <artifactId>A</artifactId> 
    <module>B</module> 
    <module>C</module> 
    <module>D</module> 
    ... 
    <profiles> 
    <profile> 
     <id>custom-test-goal</id> 
     <build> 
     <plugins> 
      <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.17</version> 
      <configuration> 
       <classpathDependencyExcludes> 
       <classpathDependencyExclude>${undesired-dependency-groupId}:${undesired-dependency-artifactId}</classpathDependencyExclude> 
       </classpathDependencyExcludes> 
      </configuration> 
      </plugin> 
     </plugins> 
     </build> 
    </profile> 
    </profiles> 
    ... 
</project> 
+0

Salut Donc, je devrais faire cela pour chaque module? Existe-t-il un moyen de faire cela uniquement dans le parent ou de l'encapsuler dans un profil? –

+0

Vous pouvez déplacer cette déclaration dans pom parent, puis placer la déclaration '' dans la balise ''. Ensuite, il suffit à l'intérieur appellent poms enfants que '' : org.apache.maven.plugins maven-plugin-Surefire Ou utiliser le plugin d'activation en fonction du profil. Je vais mettre à jour la réponse. – tmarwen

+0

Très bien, donc j'ai essayé mais maven essaie toujours de télécharger la dépendance, ce qui provoque l'erreur. Je crois que mon problème est différent alors j'ai d'abord supposé. Merci –

Questions connexes