我有這個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
感謝您的編輯,我現在理解得更好,更好的依賴關係。問候 –