如何在复制依赖时排除eclipse-plugin依赖?

时间:2011-07-07 13:22:52

标签: maven eclipse-plugin eclipse-rcp tycho

这是我在StackOverflow中的第二个问题。第一个有点长。我希望这次我可以切入点:)

说Eclipse插件项目P依赖于插件R来自Require-Bundle。所以我们在Eclipse工作区中有2个项目。

同样,Eclipse插件项目P依赖于通过Bundle-Classpath的常规A.jar。

最后,A.jar正在使用其POM进行maven回购,并依赖于B.jar。

我需要将A.jar和B.jar复制到P的本地lib文件夹,但不是R.jar。

在POM文件中,P和R的GroupId为G. A和B的GroupIds不同但不是G.

我不明白为什么但是 copy-dependencies 目标正在搜索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 个答案:

答案 0 :(得分:2)

您是否尝试手动调用复制依赖项目标?

mvn dependency:copy-dependencies

我已经使用您的配置创建了一个小型maven jar项目。我的项目将org.eclipse.core.jobs作为依赖项。如果我使用&lt; excludeGroupIds&gt; org.eclipse.core&lt; / excludeGroupIds&gt;不会复制org.eclipse.core.jobs.jar,但会复制像org.eclipse.equinox.common.jar或org.eclipse.osgi.jar这样的传递依赖项。

当我使用&lt; excludeGroupIds&gt; org.eclipse.equinox&lt; / excludeGroupIds&gt;仅复制org.eclipse.equinox.common.jar。因此,如果我理解你的问题,那么&lt; excludeGroupIds&gt;应该做你想做的事。也许你的groupId中有类型错误?

我尝试这个时遇到了一个问题:我的第一次尝试出错了,因为我只粘贴了你的&lt; excludeGroupIds&gt; G&lt; / excludeGroupIds&gt;。我的第二次尝试按预期运行,但我误解了mvn clean没有删除lib文件夹,所以我首先认为它出错了。

答案 1 :(得分:1)

<excludeScope>provided</excludeScope>添加到maven-dependency-plugin配置,以排除Tycho生成的依赖项。