2012-08-09 99 views
1

我正在處理的情況是,我們在POM中使用LATEST和RELEASE關鍵字來處理某個依賴項(依賴項和項目都屬於我們,因此我們控制了最新版本和發佈版本......並且我們一次只支持一個版本)。使用這些關鍵字可以使我們最大限度地減少發佈後所需的維護。是否有可能在運行時在屬性中獲得Maven依賴關係?

構建過程中有一個步驟必須從解壓後的依賴項中複製DLL,但由於我們沒有指定特定的版本,因此我們將解壓後的依賴項的版本號硬編碼並且必須在每次更新之後進行更新發布。有沒有辦法從Maven屬性運行時獲取此依賴項的版本?

maven-dependency-plugin(http://maven.apache.org/plugins/maven-dependency-plugin/index.html)的屬性目標獲取工件在本地資源庫中的位置(這是不是我在找什麼)。 depends-maven-plugin(如下所示:http://team.ops4j.org/wiki/display/paxexam/Pax+Exam+-+Tutorial+1)可以生成一個包含各種依賴關係及其版本的文件,但使用該文件需要一個進程讀取該文件並利用該信息。我想知道是否有更多的「Maven方式」,例如訪問屬性的依賴版本。

編輯:爲了說明起見,我們需要版本號,以便我們可以到達解壓依賴的目錄來複制文件。

+2

爲什麼不使用SNAPSHOT? – khmarbaise 2012-08-09 14:33:15

+1

這可能有幫助...根據[this](http://stackoverflow.com/questions/2359872/can-i-use-the-path-to-a-maven-dependency-as-a-property)你可以使用以下方法引用到本地存儲庫中的jar的路徑:$ {maven.dependency.com.foo.Bar.jar.path} – BenjaminLinus 2012-08-09 21:30:08

+0

如果您通過從外部注入的屬性定義依賴項,則將使您的構建不可重現,這將無法正常工作。 – khmarbaise 2012-08-10 08:05:57

回答

0

我不知道你的意思「行家方式」的話,但我做了這樣的事情看同一個插件後,你已經提到:

<build> 
<plugins> 
    <plugin> 
    <groupId>org.codehaus.gmaven</groupId> 
    <artifactId>gmaven-plugin</artifactId> 
    <version>1.5</version> 
    <executions> 
     <execution> 
     <phase>initialize</phase> 
     <goals> 
      <goal>execute</goal> 
     </goals> 
     <configuration> 
      <source>                                                             
      project.properties.put('firstdependencyinthepom', project.dependencies[0]['version'])                                            
      project.properties.put('seconddependencyinthepom', project.dependencies[1]['version'])                                            
      </source> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

,然後我能夠引用的版本這些依賴關係分別爲$ {firstdependencyinthepom}和$ {seconddependencyinthepom}。

+0

對不起,這一點需要回應。這是一個有趣的想法,但我在您提到的$ {firstdependencyinthepublic}中獲得「RELEASE」或「LATEST」。它實際上並沒有解決真正的版本。僅供參考......通過「Maven方式」,我基本上是指在Maven內部工作,而不是做一些令人覺得奇怪的事情。例如,當我提到使用Maven生成帶有信息的文件,然後將其內容讀回Maven以供利用時, – Michael 2014-11-10 13:27:43

相關問題