2011-07-07 156 views
3

這是我在StackOverflow中的第二個問題。第一個有點長。我希望這次我可以正確切入點:)如何在複製依賴關係時排除eclipse-plugin依賴關係?

說Eclipse插件項目P依靠插件R通過Require-Bundle。所以我們在Eclipse工作區中有兩個項目。

而且,Eclipse插件項目P依賴於通過Bundle-Classpath的常規A.jar。

最後,A.jar與其POM進行Maven回購,並依賴於B.jar。

我需要將A.jar和B.jar複製到P的本地lib文件夾,但不是R.jar。

在POM文件P的groupId和R爲G. A的諸組和B是不同的,但不是G.

我不明白爲什麼,但複製依賴目標是尋找R. jar,當它找不到並且不復制A.jar或B.jar時失敗。我嘗試使用excludeGroupIds但不能成功:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <configuration> 
     <excludeGroupIds>G</excludeGroupIds> 
     <outputDirectory>lib</outputDirectory> 
     <overWriteReleases>true</overWriteReleases> 
     <overWriteSnapshots>true</overWriteSnapshots> 
     <overWriteIfNewer>true</overWriteIfNewer> 
     <stripVersion>true</stripVersion> 
    </configuration> 
    <executions> 
     <execution> 
      <id>copy-dependencies</id> 
      <phase>validate</phase> 
      <goals> 
       <goal>copy-dependencies</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
<dependencies> 
    <dependency> 
     <groupId>X</groupId> 
     <artifactId>A</artifactId> 
     <version>SNAPSHOT</version> 
    </dependency> 
</dependencies> 

有沒有一種方法可以排除eclipse-plugin的依賴關係?

回答

2

您是否試圖手動調用複製依賴項目標?

mvn dependency:copy-dependencies 

我已經用你的配置創建了一個小型的maven jar項目。我的項目有org.eclipse.core.jobs作爲依賴項。如果我使用<excludeGroupIds> org.eclipse.core </excludeGroupIds > org.eclipse.core.jobs.jar不會被複制,而是像org.eclipse.equinox.common.jar或org.eclipse.osgi.jar這樣的傳遞依賴關係礦石複製。

當我使用<excludeGroupIds> org.eclipse.equinox </excludeGroupIds >只有org.eclipse.equinox.common.jar是不可複製的。所以如果我明白你的問題,<excludeGroupIds>應該做你想做的。也許你的groupId有一個類型錯誤?

我有一個問題,當我嘗試這樣做:我第一次嘗試了問題,因爲我只貼你<excludeGroupIds>摹</excludeGroupIds >。我的第二次嘗試按預期運行,但我誤以爲mvn clean不會刪除lib文件夾,所以我首先認爲它出錯了。

+0

謝謝。我將放入。現在我可以將傳遞依賴複製到我的本地庫。但是與org.eclipse。*。jar一起。有沒有辦法排除他們?我選擇了驗證步驟,因爲我想手動將依賴項複製到本地lib文件夾。我將嘗試稍後取消驗證步驟 – lembas

+0

例如,我嘗試使用 org.eclipse.core來排除org.eclipse.core.jobs.jar,但它不起作用。它仍然將org.eclipse.core.jobs.jar複製到我的本地lib文件夾中。 – lembas

+0

對不起,我不得不編輯我的答案,因爲它是完全錯誤的。如果配置位於執行標籤之外,則意味着所有執行都使用此配置,因此您的設置是正確的。希望我的新答案能幫助你,即使它只是給你一個暗示你是正確的。可悲的是我無法回答爲什麼它不適合你的情況。 – Thomas

1

<excludeScope>provided</excludeScope>添加到maven-dependency-plugin配置以排除由Tycho生成的依賴關係。