我有这个Maven的层次结构:使用传递依赖和排除使用Maven
sim-java
ejb
web
log4j
...
EJB,Web和log4j的是SIM卡的Java模块和每个模块的参考SIM-java编写父标签。
我想创建一个log4j模块,并将它作为依赖项包含在sim-java中,这样log4j将作为ejb和web模块中的依赖项存在。
基本上,我的SIM-java的内部的pom.xml包含此:(我有耳的模块,其中将包括com.sim提供范围:log4j的在耳文件)
<dependencies>
<dependency>
<groupId>com.sim</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
。现在
,我对我的log4j模块内部的pom.xml这是一个:
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
我有这样的生成错误:
30/10/12 18时56分07秒CET:构建log4j错误; org.apache.maven.lifecycle.LifecycleExecutionException:无法执行项目目标log4j:无法解析项目com.sim的依赖关系:log4j:jar:0.0.1-SNAPSHOT:找不到工件com.sim:log4j:jar: 0.0.1-SNAPSHOT
我认为有,因为SIM卡的Java使用com.sim.log4j作为传递依赖一些依赖性问题,所以我测试了一下log4j的pom.xml的内部:
<dependencies>
<dependency>
<groupId>com.sim</groupId>
<artifactId>sim-java</artifactId>
<version>0.0.1-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>com.sim</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
30/10/12 18:59:22 CET:[WARN] com.sim:log4j:jar:0.0.1-SNAPSHOT的POM缺失,无相关信息 30/10/12 1 8:59:22 CET:缺少工件com.sim:log4j:jar:0.0.1-SNAPSHOT:提供 30/10/12 18:59:22 CET:缺少工件com.sim:log4j:jar:0.0.1 -SNAPSHOT:提供 30/10/12 18点59分22秒CET:缺少伪影com.sim:log4j的:罐:0.0.1-SNAPSHOT:提供
也许包括内部模块com.sim.log4j( ejb,网页等)会工作,但我想通过sim-java项目使用传递依赖。
如何做到这一点?
奥利维尔
好吧,我怀疑这种行为。这意味着我必须在所有模块中手动包含依赖项? Thx –
我添加了一个编辑部分。我怀疑你的web模块依赖于ejb模块。因此,如果ejb模块对log4j模块有依赖性,它将成为Web模块中的传递依赖。 – maba
感谢您的编辑,我现在理解得更好,更好的依赖关系。问候 –