【问题标题】:How to exclude eclipse-plugin dependencies when copy-dependencies?复制依赖项时如何排除eclipse-plugin依赖项?
【发布时间】:2011-07-07 13:22:51
【问题描述】:

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

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

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

最后,A.jar 位于带有 POM 的 maven repo 中,并且依赖于 B.jar。

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

在 POM 文件中,P 和 R 的 GroupId 是 G。 A 和 B 的 GroupId 不同,但 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 依赖项?

【问题讨论】:

    标签: maven eclipse-plugin eclipse-rcp tycho


    【解决方案1】:

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

    mvn dependency:copy-dependencies
    

    我已经使用您的配置创建了一个小型 maven jar 项目。我的项目有 org.eclipse.core.jobs 作为依赖项。如果我使用 org.eclipse.core org.eclipse.core.jobs.jar 不会被复制,但是像 org.eclipse.equinox.common.jar 或 org.eclipse.osgi.jar 这样的传递依赖矿石复制。

    当我使用 org.eclipse.equinox 时,只有 org.eclipse.equinox.common.jar 不会被复制。因此,如果我正确理解了您的问题, 应该做您想做的事情。也许您的 groupId 中有类型错误?

    我在尝试这个时遇到了一个问题:我的第一次尝试出错了,因为我只粘贴了您的 G。我的第二次尝试确实按预期运行,但我记错了 mvn clean 不会删除 lib 文件夹,所以我首先认为它出错了。

    【讨论】:

    • 谢谢。我将 放入 。现在我可以将传递依赖项复制到我的本地库中。但连同 org.eclipse.*.jar。有没有办法排除它们?我选择了验证步骤,因为我想手动将依赖项复制到我的本地 lib 文件夹中。我稍后会尝试取消验证步骤
    • 例如我尝试 org.eclipse.core 排除 org.eclipse.core.jobs.jar 但它不起作用。它仍然将 org.eclipse.core.jobs.jar 复制到我的本地 lib 文件夹中。
    • 对不起,lembas,我不得不编辑我的答案,因为它完全错误。如果配置在执行标记之外,则仅表示此配置被所有执行使用,因此您的设置是正确的。希望我的新答案对您有所帮助,即使它只是暗示您走在正确的道路上。可悲的是,我无法回答为什么它在您的情况下不起作用。
    【解决方案2】:

    &lt;excludeScope&gt;provided&lt;/excludeScope&gt;添加到maven-dependency-plugin配置中,排除Tycho生成的依赖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多