2011-05-18 35 views
1

我的settings.xml中的屬性解析,的Maven的settings.xml屬性不傳遞依賴

fwk.version = "2.0.001"

另一邊,有兩個項目,earmodule和ejbModule中一個多項目。

的ejbModule具有相關性:

<dependency> 
     <groupId>shared-lib</groupId> 
     <artifactId>proxi2.fwk.comuns</artifactId> 
     <version>${fwk.version}</version> 
     <type>pom</type> 
    </dependency> 

,它的正常工作

但earmodule對的ejbModule依賴

<dependencies> 
    <dependency> 
     <groupId>projectGroup</groupId> 
     <artifactId>ejbmodule</artifactId> 
     <version>1.0</version> 
     <type>ejb</type> 
    </dependency> 
</dependencies> 

,並試圖解決依賴和它失敗:

[警告]缺少共享庫的POM:proxi2.fwk.comuns:pom :$ {} fwk.version

,而不是試圖下載

共享lib目錄下:proxi2.fwk.comuns:POM:2.0.001

它發生時,我嘗試打包父項目。

看起來像Maven3

你知道爲什麼一個錯誤?

THX

編輯:

我們的解決方案/解決方法已經在父POM一個dependencyManagement部分被定義,因爲這個級別的作品確定。

然後在子項目ejbModule中,我們有一個 「獨立版」 的依賴,因爲在dependencyManagement使用父定義

的settings.xml:

<fwk.version>2.0.001</fwk.version> 

父POM:

<dependencyManagement> 
    <dependency> 
     <groupId>shared-lib</groupId> 
     <artifactId>proxi2.fwk.comuns</artifactId> 
     <version>${fwk.version}</version> 
     <type>pom</type> 
    </dependency> 
</dependencyManagement> 

的ejbModule POM :

<dependency> 
    <groupId>shared-lib</groupId> 
    <artifactId>proxi2.fwk.comuns</artifactId> 
    <type>pom</type> 
</dependency> 

我希望這會幫助其他

+0

請問如果你的父POM,而不是*的settings.xml指定了相同的屬性它的工作*?另外,你是否嘗試* mvn包*或* mvn安裝*?後者是否工作? – Raghuram 2011-05-18 10:12:40

+0

這是一個包,如果我在父pom中指定它,它也不起作用。 – shilox 2011-05-18 10:27:57

回答

1

看起來像有一個open與此相關的maven錯誤。

+0

是的,它似乎:(我希望有人有一個解決方法... – shilox 2011-05-18 10:43:50

0

我只在不同的情況下看到類似的問題。我用了一個屬性來定義一個URL發送到哪裏我創建的javadoc這樣

<distributionManagement> 
    <site> 
     <id>javadocs</id> 
     <name>Java Documentation</name> 
     <url>scp://${javadocs.url}/${project.groupId}/${project.artifactId}/${project.version}</url> 
    </site> 
</distributionManagement> 

當然,我設置我的設置屬性。XML配置文件中的

</settings> 
    . 
    . 
    <profiles> 
     <profile> 
      <id>develop</id> 
      <properties> 
       <environment.type>develop</environment.type> 
       <javadocs.url>javadocs.server.com/home/javadocs/javadocs</javadocs.url> 
      </properties> 
      . 
      . 
    <activeProfiles> 
     <activeProfile>develop</activeProfile> 
    </activeProfiles> 
</settings> 

distributionManagement部分投入其中作爲父項目孩子

項目的POM在做

mvn site-deploy 

孩子項目我得到這個錯誤:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.0:deploy (default-deploy) on project child: Error uploading site: Cannot connect. Reason: java.net.UnknownHostException: ${javadocs.url} -> [Help 1]

很明顯,該屬性沒有設置。

我能想到的唯一的解決方法是把屬性在父POM。我知道這很糟糕,因爲如果你想改變它們,你需要重新部署。