2010-08-02 66 views
4

我有一个EAR与一些EJB依赖关系。其中2个提供了对glassfish-all-jar的范围依赖。但是,当我在本地机器上执行mvn安装或通过哈德森上的maven构建应用程序时,耳朵始终包含glassfish-embedded-all jar。Maven忽略提供的范围

例如数据访问的EJB与提供的依赖

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

应用耳与EJB依赖

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

任何想法,我做错了或可能的建议吗?

干杯,

詹姆斯

回答

4

尝试以分析什么神器包括glassfish-embedded-all.jar使用mvn dependency:tree,有机会,你会忽视的东西。 Maven不会包含没有声明为直接依赖和/或通过传递依赖继承的工件。

还可以发出和mvn dependency:analyze-only命令来进一步清理那些你并不真正需要的依赖关系。

2

依赖与provided scope are not transitive这样你就不会得到它传递性,必须有别的东西。从耳机模块运行mvn dependency:tree

但实际上,我真的很想知道为什么你使用provided范围,我认为test范围可能更合适。顺便说一句,我建议使用GF 3.0.1:

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