Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是Maven';系统&x27;范围可传递,但';提供';不_Maven - Fatal编程技术网

是Maven';系统&x27;范围可传递,但';提供';不

是Maven';系统&x27;范围可传递,但';提供';不,maven,Maven,Maven的POM参考说明如下: 提供了-这很像编译,但表示您希望 JDK或一个容器来提供它 运行时。它仅在 编译和测试类路径,以及 是不及物的 系统-此范围与提供的类似,只是您必须 提供包含它的JAR 明确地人工制品总是 可用,并且未在中查找 存储库 我现在已经将一个具有大量“系统”依赖项的项目转换为“提供”。然而,系统依赖项似乎是可传递的,这使得它们与提供的非常不相似,并且现在导致我的构建中缺少许多依赖项。我的问题有两个: 系统范围是可传递的吗?如果是这样,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以外的其他人提供。