Maven忽略了提供的范围

时间:2010-08-02 12:44:36

标签: maven-2 java-ee ejb-3.0

我有一个包含许多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>

任何想法我做错了什么或可能的建议?

干杯,

詹姆斯

2 个答案:

答案 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>