java - Maven 插件依赖项包含在 MANIFEST.MF 中

标签 java eclipse maven

我正在尝试在 Eclipse-IDE(Version Kepler Service Release 2; Maven 3.0.4) 的 MANIFEST.MF 中构建一个具有有效类路径的 jar。我的pom.xml中maven-jar-plugin的相关配置是

<plugin>
  <artifactId>maven-jar-plugin</artifactId>
  <version>2.4</version>
  <configuration>
    <archive>
      <addMavenDescriptor>false</addMavenDescriptor>
      <manifest>
        <addClasspath>true</addClasspath>
        <classpathPrefix>lib/</classpathPrefix>
        <classpathLayoutType>custom</classpathLayoutType>
        <customClasspathLayout>$${artifact.artifactId}-$${artifact.version}.$${artifact.extension}</customClasspathLayout>
      </manifest>
    </archive>
  </configuration>
</plugin>

然而,这并没有像预期的那样工作。例如,我正在使用 findbugs-maven-plugin,这个插件创建了一些 Maven-Dependencies,即我本地存储库中的 findbugs-maven-plugin-2.5.4.jar。这是 findbugs-plugin 的配置

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>findbugs-maven-plugin</artifactId>
  <version>2.5.4</version>
  <configuration>
    <findbugsXmlOutput>true</findbugsXmlOutput>
    <xmlOutput>true</xmlOutput>
    <!-- Optional directory to put findbugs xdoc xml report -->
    <xmlOutputDirectory>target/findbugs</xmlOutputDirectory>
  </configuration>
 </plugin>

这没问题,但这种依赖性也会出现在我的 MANIFEST.MF 的类路径条目中,如下所示(摘录):

lib/findbugs-maven-plugin-2.5.4.jar

问题是,我不知道如何禁用此行为。

到目前为止我尝试过的: 使用 maven-dependency-plugin 并定义 excludeGroupId 和 excludeArtifactId 条目,这解决了另一个问题,其中依赖项全部复制到目标目录中的 lib-Folder。

显然我在这里遗漏了一些东西。

最佳答案

好的,我设法解决了这个问题。

依赖项来 self 正在处理的模块库。它定义了对 findbugs-maven-plugin-2.5.4.jar 的依赖。此依赖项已被 maven 识别并放置在我要构建的 jar 的类路径中。

可以在这里找到这个问题的解决方案 http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html .可以定义对传递库的排除。因此,对 base ind my 模块的依赖必须写成:

<dependency>
  <groupId>base</groupId>
  <artifactId>base</artifactId>
  <version>1.0.0</version>
  <exclusions>
    <exclusion>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>findbugs-maven-plugin</artifactId>
    </exclusion>
  </exclusions>
</dependency>

感谢 Tome,他终于为我指明了正确的方向!

关于java - Maven 插件依赖项包含在 MANIFEST.MF 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24610438/

相关文章:

java - Lotus Notes API 在文档集合合并中给出错误

java - Eclipse 说 : Web Fragment Module 3. 0 需要 Java 1.6 或更高版本,但我的项目方面未设置

eclipse - 从 Eclipse Galileo 升级到 Helios

java - 如何自动更新本地maven存储库.m2文件夹以进行离线构建

java - java 1.4 中的 Arrays.copyOf

Java - 字符和字节流

java - 在 Android 警报对话框中使用 HTML

maven - maven-surefire-plugin,DLL和java.library.path

android - 如何修复 Eclipse 中 android-maven-plugin 的 list 更新生命周期错误?

java - RecursiveTask 线程不会被 join() 阻塞