2010-08-02 89 views
4

我有一個EAR與一些EJB依賴關係。其中2個提供了對glassfish-all-jar的範圍依賴。但是,當我在本地機器上執行mvn安裝或通過哈德森上的maven構建應用程序時,耳朵始終包含glassfish-embedded-all jar。Maven忽略提供的範圍

例如數據訪問的EJB與提供的依賴

<dependency> 
    <groupId>org.glassfish.extras</groupId> 
    <artifactId>glassfish-embedded-all</artifactId> 
    <version>3.0</version> 
    <scope>provided</scope> 
</dependency> 

應用耳與EJB依賴

<dependency> 
    <groupId>com.xxx.yyy</groupId> 
    <artifactId>DataAccess-ejb</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <type>ejb</type> 
</dependency> 

任何想法,我做錯了或可能的建議嗎?

乾杯,

詹姆斯

回答

4

嘗試以分析什麼神器包括glassfish-embedded-all.jar使用mvn dependency:tree,有機會,你會忽視的東西。 Maven不會包含沒有聲明爲直接依賴和/或通過傳遞依賴繼承的工件。

還可以發出和mvn dependency:analyze-only命令來進一步清理那些你並不真正需要的依賴關係。

2

依賴與provided scope are not transitive這樣你就不會得到它傳遞性,必須有別的東西。從耳機模塊運行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>