Question

J'ai un fichier POM maven pour un service Web. Pour l'une des dépendances, je dois spécifier plusieurs exclusions pour les fichiers jar déjà conservés à un niveau supérieur dans le serveur d'applications Web (accessibles à toutes les applications Web, pas seulement à celui-ci). Le fichier JAR contenant mon pilote JDBC est un exemple de cette exclusion.

Exemple (avec détails fictifs):

<dependency>
    <groupId>mygroup</groupId>
     <artifactId>myartifact</artifactId>
     <version>1.0.0</version>
     <exclusions>
         <!--The jdbc driver causes hot-deployment issues-->
         <exclusion>
             <groupId>db.drivers</groupId>
             <artifactId>jdbc</artifactId>
         </exclusion>
     </exclusions>
 </dependency>

Le problème que je rencontre est que j'ai besoin du pilote JDBC pour mes tests. Mes tests échouent actuellement car ils ne peuvent pas charger le pilote JDBC.

Comment configurer le POM de manière à ce que les parties exclues soient accessibles à mes tests, sans être incluses dans mon fichier WAR?

Mise à jour : je ne peux pas modifier le POM pour mygroup.myartifact car de nombreux autres projets en dépendent, et cette exigence d'exclusion est unique pour mon projet.

Mise à jour 2: Il semble que j'ai mal rédigé la question. La solution de Lars ci-dessous est parfaite pour une exclusion (comme le montre l'exemple), cependant, dans mon scénario réel, j'ai plusieurs exclusions, et l'ajout de dépendances supplémentaires pour chacune semble malodorant. La solution qui semble fonctionner consiste à définir la portée de la dépendance indiquée sur compiler , puis à créer une deuxième dépendance du même artefact (mygroup.myartifact) sans exclusions et à définir le périmètre sur . . Étant donné que Lars a répondu correctement à ma question mal formulée et m'a également conduit dans la direction de la solution actuelle, je marquerai sa réponse comme une réponse.

Était-ce utile?

La solution

Utilisez le champ "scope". tag à l'intérieur de votre dépendance.

<scope>test</scope>

http://maven.apache.org/pom.html#Dependencies

modifier: si je comprends bien votre configuration, le scope = test que vous devez ajouter doit être ajouté au POM mygroup.myartifact. De cette façon, vous pouvez tester cet artefact avec le jar jdbc inclus, mais toujours lorsque d’autres POMS souhaitent inclure mygroup.myartifact, jdbc n’est pas inclus en tant que dépendance transitive.

deuxième édition: Ok, si vous ne contrôlez pas le POM que vous souhaitez inclure, effectuez une exclusion comme vous l'avez déjà faite, puis ajoutez jdbc en tant que nouvelle dépendance, avec scope = test.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top