2012-08-29 72 views
4

在我的項目中,我有maven依賴項。
的方式是:如何在Maven中設置依賴項引用的屬性

<dependency> 
    <groupId>org.mule.modules</groupId> 
    <artifactId>mule-module-activiti</artifactId> 
    <version>3.2.0</version> 
</dependency> 

在這種依賴性POM存在被使用,但沒有定義的屬性 - ${activiti.version}

我發現如何設置該屬性的唯一方法是通過指定它的命令行像mvn -Dactiviti.version=5.10

是否有某種方法如何在我的項目POM中指定此屬性?
<properties><activiti.version>5.10</activiti.version></properties>不起作用。

我希望我能夠讓問題清楚。
感謝您的幫助。

編輯:

<dependency> 
    <groupId>org.mule.modules</groupId> 
    <artifactId>mule-module-activiti</artifactId> 
    <version>3.2.0</version> 
</dependency> 

,並提供所需的資源庫:

<repositories> 
     <repository> 
      <id>muleforge-repo</id> 
      <name>MuleForge Repository</name> 
      <url>http://repository.muleforge.org/release</url> 
      <layout>default</layout> 
     </repository> 

     <repository> 
      <id>codehaus-repo</id> 
      <name>Codehaus Repository</name> 
      <url>http://dist.codehaus.org/mule/dependencies/maven2</url> 
      <layout>default</layout> 
     </repository> 
     <repository> 
      <id>activiti</id> 
      <name>Activiti</name> 
      <url>https://maven.alfresco.com/nexus/content/groups/public/</url> 
     </repository> 
    </repositories> 

情況我試圖解決可如果你的依賴創造新的Maven項目轉載編輯2:

這是POMorg.mule.modules:mule-module-activiti:3.2.0,我的項目依賴於庫。在這個pom內部,他們使用表達式${activiti.version}。但他們不爲設置此表達式的值。 (沒有什麼像<properties><activiti.version>5.10</activiti.version></properties>

問題是我該如何設置這個表達式的值從我的 pom?

+0

使用pom的屬性部分是最佳解決方案。爲什麼它不適合你? –

回答

4

好的,finnaly,經過幾天的搜索和試驗,我發現我的問題的解決方案。

如果您需要了解命令行行家提供的屬性(談論系統屬性,這是從Maven的性質略有不同),您還可以使用插件來在你的POM中或在單獨的屬性提供這些特性文件。

說明: 系統屬性可用於重寫您的依賴項中的maven屬性。

像這樣:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>1.0-alpha-2</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>set-system-properties</goal> 
      </goals> 
      <configuration> 
       <properties> 
        <property> 
         <name>activiti.version</name> 
         <value>5.10</value> 
        </property> 
       </properties> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

我希望這將是有所幫助的人。

同樣對不起,我的笨拙的問題顯然很難理解。

4

您可以使用屬性來定義版本:

<properties> 
    <module-version>3.2.0</module-version> 
</properties> 
.. 
<dependency> 
    <groupId>org.mule.modules</groupId> 
    <artifactId>mule-module-activiti</artifactId> 
    <version>${module-version}</version> 
</dependency> 

爲什麼不應該that work

你不應該通過命令行上的屬性來定義工件的版本,因爲你將來無法重現這一點,我懷疑這是否有效。

+1

是的,你所描述的絕對有效。我試圖說的是,當依賴我使用定義版本的IT與屬性的依賴關係,但沒有指定它的價值。 檢查此pom - http://repository.muleforge.org/release/org/mule/modules/mule-module-activiti/3.2.0/mule-module-activiti-3.2.0.pom –

+0

不應該依賴關係集成測試與單元測試以及創建釋放工件相同。 – khmarbaise

+0

是的,可能,但我不擁有這種依賴關係,我需要使用它。我試圖避免每次需要構建項目時都必須在命令行上提供參數。 –

0

確保您沒有用於與外界通話的代理設置。我只是嘗試了你的配置,它工作。我正在使用最新的Maven 3版本。

+0

您是否設置了命令行參數?例如: 'mvn clean install -Dactiviti.version = 5.10',或者你運行它沒有像''mvn clean install'這樣的參數? –

+0

我在pom.xml中提供了像 3.2.0 的屬性。你也可以嘗試從命令行執行它,但它仍然工作 – Metalhead

+0

當你從命令行嘗試時,你會得到wat錯誤嗎? – Metalhead