是Maven';系统&x27;范围可传递,但';提供';不
Maven的POM参考说明如下: 提供了-这很像编译,但表示您希望 JDK或一个容器来提供它 运行时。它仅在 编译和测试类路径,以及 是不及物的 系统-此范围与提供的类似,只是您必须 提供包含它的JAR 明确地人工制品总是 可用,并且未在中查找 存储库 我现在已经将一个具有大量“系统”依赖项的项目转换为“提供”。然而,系统依赖项似乎是可传递的,这使得它们与提供的非常不相似,并且现在导致我的构建中缺少许多依赖项。我的问题有两个:是Maven';系统&x27;范围可传递,但';提供';不,maven,Maven,Maven的POM参考说明如下: 提供了-这很像编译,但表示您希望 JDK或一个容器来提供它 运行时。它仅在 编译和测试类路径,以及 是不及物的 系统-此范围与提供的类似,只是您必须 提供包含它的JAR 明确地人工制品总是 可用,并且未在中查找 存储库 我现在已经将一个具有大量“系统”依赖项的项目转换为“提供”。然而,系统依赖项似乎是可传递的,这使得它们与提供的非常不相似,并且现在导致我的构建中缺少许多依赖项。我的问题有两个: 系统范围是可传递的吗?如果是这样,Maven引用是错误的还是不完整
可传递依赖项将始终是程序集的一部分。没有空间陈述你的意图行为 问题是:为什么一个计划包含在其他项目中的项目(正如您所说的具有可传递依赖项的计划)有一个程序集?通常,具有WAR程序集的项目不会作为依赖项包含在其他项目中(WAR依赖项根本不提供其可传递的依赖项,因为它们仅用于WAR覆盖) 如果这是一个maven程序集,那么这很简单。Maven Assembly插件有“excludes”来过滤必须复制的文件 如果这是一个WAR项目,您可以使用以下排除项从WAR中排除一些JAR:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<packagingExcludes>WEB-INF/lib/*-[toExclude1]-*.jar,WEB-INF/lib/[toExclude2]*.jar</packagingExcludes>
</configuration>
</plugin>
maven战争插件
WEB-INF/lib/*-[toExclude1]-*.jar,WEB-INF/lib/[toExclude2]*.jar
您所说的“使依赖项可传递”是什么意思?(至于系统范围,其理由是“系统依赖性对于解决现在由JDK提供的工件上的依赖性特别有用,但在早期单独下载时可用)…这对我来说毫无意义,因为一旦POM由JDK提供,您就需要更改POM,所以最好将范围更改为提供。)system
scope与provided
类似,因为它声明依赖关系将由Maven以外的其他人提供。