2010-08-02 4 views
4

J'ai un EAR avec un certain nombre de dépendances EJB. 2 d'entre eux ont une dépendance de portée fournie à la jarre glassfish-embedded-all. Cependant quand je fais une installation de mvn sur ma machine locale ou quand l'application est construite par maven sur hudson l'oreille contient toujours le pot glassfish-embedded-all.Maven ignorant la portée fournie

par exemple. DataAccess-ejb avec dépendance fourni

<dependency> 
    <groupId>org.glassfish.extras</groupId> 
    <artifactId>glassfish-embedded-all</artifactId> 
    <version>3.0</version> 
    <scope>provided</scope> 
</dependency> 

Application-oreille avec la dépendance ejb

<dependency> 
    <groupId>com.xxx.yyy</groupId> 
    <artifactId>DataAccess-ejb</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <type>ejb</type> 
</dependency> 

Toutes les idées ce que je fais des suggestions erronées ou possibles?

Cheers,

James

Répondre

4

Essayez d'utiliser mvn dependency:tree afin d'analyser ce que l'artefact est compris les glassfish-embedded-all.jar, les chances sont que vous sur quelque chose. Maven n'inclura pas un artefact qui n'est pas déclaré comme dépendance directe et/ou hérité par dépendance transitive.

Vous pouvez également exécuter et mvn dependency:analyze-only commande pour nettoyer davantage les dépendances dont vous n'avez pas vraiment besoin.

2

Dépendances avec un provided scope are not transitive donc vous ne l'obtenez pas de façon transitive, il doit y avoir autre chose. Exécutez mvn dependency:tree à partir du module d'oreille. En réalité, je me demande vraiment pourquoi vous utilisez une portée provided, je pense qu'une portée test pourrait être plus appropriée. Et en passant, je suggère d'utiliser GF 3.0.1:

<dependency> 
    <groupId>org.glassfish.extras</groupId> 
    <artifactId>glassfish-embedded-all</artifactId> 
    <version>3.0.1</version> 
    <scope>test</scope> 
</dependency> 
Questions connexes