Maven的POM参考说明如下:
提供 - 这很像编译,但表示您希望JDK或容器在运行时提供它.它仅在编译和测试类路径中可用,并且 不可传递.
...
system - 此范围与提供的类似,只是您必须提供明确包含它的JAR.工件始终可用,并且不会在存储库中查找.
我现在已经将具有许多"系统"依赖关系的项目转换为"提供".但是,似乎系统依赖性是可传递的,这使得它们与提供的非常不相似,并且现在在我的构建中导致许多缺少的依赖项.我的问题是双重的:
传递依赖项将始终是程序集的一部分。没有范围来陈述您的意图行为。
问题是:为什么有一个旨在包含在其他项目中的项目(正如您所说的旨在具有传递依赖项)程序集?通常,具有 WAR 程序集的项目不会作为依赖项包含在其他项目中(WAR 依赖项根本不提供其传递依赖项,因为它们仅用于 WAR 覆盖)。
如果这是一个 Maven 组件,这很简单。Maven Assembly 插件具有“排除”功能来过滤必须复制的文件。
如果这是一个 WAR 项目,您可以使用以下排除项从 WAR 中排除一些 JAR:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<packagingExcludes>WEB-INF/lib/*-[toExclude1]-*.jar,WEB-INF/lib/[toExclude2]*.jar</packagingExcludes>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2325 次 |
| 最近记录: |