这是我在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依赖?
答案 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生成的依赖项。