我有一个包含许多EJB依赖项的EAR。其中2个具有与glassfish-embedded-all jar相关的范围依赖性。但是,当我在本地机器上安装mvn或者通过maven on hudson构建应用程序时,耳朵总是包含glassfish-embedded-all jar。
e.g。具有提供的依赖性的DataAccess-ejb
<dependency>
<groupId>org.glassfish.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
具有ejb依赖性的Application-ear
<dependency>
<groupId>com.xxx.yyy</groupId>
<artifactId>DataAccess-ejb</artifactId>
<version>1.0-SNAPSHOT</version>
<type>ejb</type>
</dependency>
任何想法我做错了什么或可能的建议?
干杯,
詹姆斯
答案 0 :(得分:4)
尝试使用mvn dependency:tree
来分析包含glassfish-embedded-all.jar
的工件,可能会忽略某些内容。 Maven不会包含未声明为直接依赖项和/或通过传递依赖项继承的工件。
您还可以发出mvn dependency:analyze-only
命令以进一步清理那些您并不真正需要的依赖项。
答案 1 :(得分:2)
与provided
scope are not transitive的依赖关系,所以你没有得到它的传递,必须有其他东西。从ear模块运行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>