2011-08-24 97 views
3

我想從maven中獲取一組運行時依賴關係。我正在使用maven ant任務。在螞蟻中獲取maven運行時依賴關係

我知道,你可以限制範圍的依賴關係(see docs):

<artifact:dependencies filesetId="dependency.fileset" useScope="runtime"> 
    <artifact:pom file="pom.xml" id="myProject" /> 
</artifact:dependencies> 

和作用域選項(從文檔)是:

•compile - Includes scopes compile, system and provided 
•runtime - Includes scopes compile and runtime 
•test - Includes scopes system, provided, compile, runtime and test 

不過,我想只有運行時依賴關係(即排除編譯依賴關係)。到目前爲止,我的最佳想法是獲得運行時依賴項和編譯依賴項,並遍歷運行時依賴項以找到那些不在編譯依賴項中的項,但我還沒有弄清楚如何執行此操作。

任何想法?

回答

0

所以這就是我試圖讓運行時的差異和編譯文件集(雖然這使得有什麼在編譯文件集,這不是也是在運行時文件集的假設)

<artifact:dependencies filesetId="runtime" scopes="runtime"> 
    <artifact:pom file="pom.xml" id="myProject" /> 
</artifact:dependencies> 
<artifact:dependencies filesetId="compile" scopes="compile"> 
    <artifact:pom file="pom.xml" id="myProject" /> 
</artifact:dependencies> 

<difference id="difference" > 
    <resources refid="runtime" /> 
    <resources refid="compile" /> 
</difference> 

然而,這並沒有產生我期望的結果,所以我做了以下操作,發現運行時文件集確實包含編譯依賴關係,而不是,而不是

<echo message="${toString:runtime}" /> 
<echo message="${toString:compile}" /> 

這樣我就可以使用的運行範圍...

+0

每個文件集將containt * ONLY *分別範圍的依賴性。運行時依賴關係不包含編譯時的依賴關係。 – carlspring

+0

@carlspring - 確切地說,但這不是文檔所說的! – amaidment

+0

嘿!我建議你提交一份錯誤報告,要求他們修復文檔。這是,否則,你需要什麼。 如果您發現我的答案有用且正確,您可以接受。 乾杯! :) – carlspring

1

你需要沿着線的東西:

... 
<artifact:pom id="maven.project" file="pom.xml"/> 

<artifact:dependencies useScope="runtime" 
         filesetId="dependencies.runtime" 
         pomRefId="maven.project" 
         settingsFile="${settings.xml}"/> 
... 

然後你就可以使用dependencies.runtime文件集如常。

我希望這樣做更有意義。