2014-05-05 105 views
2

我將項目從Maven 1升級到Maven 3.它工作正常,但我還有其他一些問題。 Maven 3沒有像下面這樣的「屬性」標籤;Maven:通過屬性複製依賴項

<dependency> 
    <groupId>commons-logging</groupId> 
    <properties> 
     <cdstool.bundle>true</cdstool.bundle> 
     <war.bundle>true</war.bundle> 
    </properties> 
</dependency> 

但要做出釋放我需要知道需要什麼,其依賴的時候,所以我可以將它們複製到我的release文件夾相關的文件夾。

這是Ant從以前的Maven 1版本創建發行版的目標,它通過檢查它們的「屬性」將某些依賴項複製到特定的文件夾下面是一個示例,但是有超過1個目標目錄,被複制

<j:forEach var="lib" items="${pom.artifacts}"> 
     <j:set var="dep" value="${lib.dependency}"/> 
     <j:if test="${dep.getProperty('cdstool.bundle')=='true'}"> 
      <ant:copy failonerror="true" todir="${maven.build.dir}/cdstool"> 

      </ant:copy> 

     </j:if> 
    </j:forEach> 

如何在不使用Ant的情況下在當前的Maven 3項目中執行此操作?

首先,我需要知道依賴項屬性,所以我知道什麼TI複製到哪裏,哪些在我當前的pom依賴項中缺少,因爲沒有屬性標記。然後我需要使用Maven Assembly插件將它們複製到我想要的文件夾中。

+0

這是一個有趣的問題,我沒有直接的答案。我最初的直覺是讀入Maven assembly插件;我敢肯定,你應該使用它來控制最終在可部署工件中的什麼位置。可能沒有簡單的過渡要做,你必須找到一種獲得相同結果的新方法。 – Gimby

+0

@Gimby dank je wel! – Spring

回答

0

我建議您爲每個包創建一個單獨的程序集,然後在每個程序集中包含或排除所需的相關性。

+0

tnx但你的答案太短了,如果我能知道如何包含或排除目錄中給出的依賴關係,我就已經在做它了。他們沒有物業,所以我不能檢查 – Spring