2015-04-16 160 views
0

目前,我有一個項目,模塊B依賴於模塊A的依賴Maven的繼承依賴模塊

模塊A是:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
    <groupId>com.A</groupId> 
    <artifactId>P</artifactId> 
    <version>1.0.0</version> 
    </parent> 
    <artifactId>A</artifactId> 
    <version>1.0.0</version> 
    <packaging>jar</packaging> 
    <name>A</name> 
    <build> 
    <sourceDirectory>${sourceDirectory}/A/src</sourceDirectory> 
    </build> 
    <dependencies> 
    <dependency> 
     <groupId>org.osgi</groupId> 
     <artifactId>org.osgi.core</artifactId> 
     <version>5.0.0</version> 
     <optional>true</optional> 
    </dependency> 
    </dependencies> 
</project> 

模塊B是:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
    <groupId>com.A</groupId> 
    <artifactId>P</artifactId> 
    <version>1.0.0</version> 
    </parent> 
    <artifactId>B</artifactId> 
    <version>1.0.0</version> 
    <packaging>jar</packaging> 
    <name>B</name> 
    <build> 
    <sourceDirectory>${sourceDirectory}/B/src</sourceDirectory> 
    </build> 
    <dependencies> 
    <dependency> 
     <groupId>com.A</groupId> 
     <artifactId>C</artifactId> 
     <version>1.0.0</version> 
     <optional>true</optional> 
    </dependency> 
    <dependency> 
     <groupId>com.A</groupId> 
     <artifactId>A</artifactId> 
     <version>1.0.0</version> 
    </dependency> 
    </dependencies> 
</project> 

爲了編譯BI,需要a-dep中的類。如果我手動添加a-dep作爲依賴項,則所有編譯都會正常。但是這個項目需要我依靠A來獲得一個dep,而不是明確地聲明a-dep。

有沒有辦法根據模塊A從a-dep中獲取類?

+0

這應該工作。你可以做一個示例項目,顯示這個問題...如果你定義了一個依賴關係,你也將得到所有的傳遞依賴關係。所以我的問題已經在依賴中定義了一個範圍? – khmarbaise

+0

@khmarbaise我已經更新了實際代碼的示例(只替換了變量名稱)。我認爲它也可以工作,但它不像我編譯B時那樣,因爲osgi核心中的類會導致錯誤。 – tom

+0

爲什麼要定義' $ {sourceDirectory}/B/src'? – khmarbaise

回答

0

能夠通過移除真正的標籤來解決它,因爲它阻止B能夠看到依賴關係。