依赖性范围“编译”未包含在程序集中

时间:2010-06-09 09:13:51

标签: maven-2 scope dependencies maven-assembly-plugin

我在项目的POM中指定了以下依赖项:

 <dependency>
  <groupId>org.jboss.client</groupId>
  <artifactId>jbossall-client</artifactId>
  <scope>compile</scope>
 </dependency>

我的项目本身必须是另一个POM的孩子。在那一个中​​,定义如下:

<dependency>
   <groupId>org.jboss.client</groupId>
   <artifactId>jbossall-client</artifactId>
   <version>4.2.3.GA</version>
   <scope>provided</scope>
   <type>jar</type>
</dependency>

当我现在组装我的程序时,似乎父POM的“提供”范围覆盖了我的项目范围,因为jbossall-client.jar未包含在我的程序集中。虽然对我来说似乎不合逻辑,但也许this feature在这里生效。

您是否知道在不触及父POM的情况下在程序集中包含依赖项的方法?


修改 输出mvn dependency-tree(已更新!):

[dependency:tree]
com.myproject:myproject:jar:0.0.1-SNAPSHOT
+- com.myproject-commons:jar:1.0-SNAPSHOT:compile
|  +- commons-logging:commons-logging:jar:1.0.4:compile
|  +- log4j:log4j:jar:1.2.14:compile
|  +- sv.seucc:seucc-unicode:jar:1.0.1.5:compile
|  +- commons-lang:commons-lang:jar:2.2:compile
|  +- com.thoughtworks.xstream:xstream:jar:1.2.1:compile
|  \- xpp3:xpp3_min:jar:1.1.3.4.O:compile
+- com.myproject-interfaces2:jar:1.0-SNAPSHOT:compile
|  \- com.myproject-service-commons:jar:1.0-SNAPSHOT:compile
+- org.springframework:spring:jar:2.5.6:compile
+- commons-io:commons-io:jar:1.3.1:compile
+- com.myproject-modules:ejb:1.0-SNAPSHOT:compile
\- org.jboss.client:jbossall-client:jar:4.2.3.GA:compile

编辑2:这是我的程序集XML的依赖部分。

 <dependencySets>
  <dependencySet>
   <outputDirectory>lib</outputDirectory>
  </dependencySet>
 </dependencySets>

编辑3:以下是我获取的程序集的 lib 文件夹中的文件。

commons-io-1.3.1.jar
commons-lang-2.2.jar
commons-logging-1.0.4.jar
log4j-1.2.14.jar
seucc-unicode-1.0.1.5.jar
spring-2.5.6.jar
xpp3_min-1.1.3.4.O.jar
xstream-1.2.1.jar
myproject-commons-1.0-SNAPSHOT.jar
myproject-modules-1.0-SNAPSHOT.jar
myproject-service-commons-1.0-SNAPSHOT.jar
myproject-interfaces2-1.0-SNAPSHOT.jar
myproject-0.0.1-SNAPSHOT.jar

编辑4:有关此问题的回答,请参阅正确答案的最终评论。

2 个答案:

答案 0 :(得分:1)

两个依赖项都没有相同的groupId,所以在这里没有被覆盖,它们被视为不同的工件。但是我想知道你的孩子pom是如何工作的(因为jbossall-client没有任何版本)。你有dependencyManagement部分吗?

无论如何,要“调试”这类问题,请在子项目中使用mvn dependency:tree(如果需要更多帮助,请发布输出)。


更新:以上是我对最初问题的回答,并未反映问题的当前状态。

为了清楚起见,最终解决方案的关键是在汇编描述符的<scope>compile</scope>元素中声明runtime(默认为dependencySet)。有关所有详细信息,请参阅评论。

另见

答案 1 :(得分:0)

我们遇到了同样的问题并通过添加提供的范围的第二个依赖集来解决它,但这只有在我们升级到汇编插件的2.2.1版时才有效。