3

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

假设 Eclipse 插件项目 P 通过 Require-Bundle 依赖于插件 R。所以我们的 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 的 GroupId 不同,但不是 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 依赖项?

4

2 回答 2

2

您是否尝试手动调用 copy-dependencies 目标?

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>G</excludeGroupIds>。我的第二次尝试确实按预期运行,但我记错了 mvn clean 不会删除 lib 文件夹,所以我首先认为它出错了。

于 2011-07-13T22:00:53.320 回答
1

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

于 2012-08-17T14:45:29.313 回答