Maven:过滤清单的类路径条目

时间:2016-02-03 14:57:18

标签: maven classpath manifest

我已通过official documentation中描述的方法将类路径上的jar名称添加到清单文件中。

即。通过添加

<manifest>
    <addClasspath>true</addClasspath>
</manifest>

到ejb插件。现在我不想要所有这些文件,但想要排除其中的一些(因为它们是由webSphere直接提供的,不应该列出)。

问题:我可以在这里申请任何排除机制吗?

1 个答案:

答案 0 :(得分:1)

目标容器提供的Maven依赖项应列为scope provided。根据{{​​3}}

  

这很像compile,但表示您希望JDK或容器在运行时提供依赖项。例如,在为Java Enterprise Edition构建Web应用程序时,您可以将Servlet API和相关Java EE API的依赖关系设置为提供的范围,因为Web容器提供了这些类。此范围仅在编译和测试类路径中可用,并且不可传递。

因此,您应该将相关的依赖关系设置为提供的范围:

<dependency>
    <groupId>...</groupId>
    <artifactId>..</artifactId>
    <version>...</version>
    <scope>provided</scope>
</dependency>

Maven将用它进行编译,测试但不用于包装。它也将从Manifest类路径中排除。

您可以检查official documentation providedcompile范围之间的差异(默认值,无需在每个依赖关系声明中指定),而this SO question完全具有相反的问题。