Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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传递依赖_Maven_Transitive Dependency - Fatal编程技术网

maven传递依赖

maven传递依赖,maven,transitive-dependency,Maven,Transitive Dependency,在pom.xml中定义数据时,我试图遵循最佳实践,因此我开始研究Spring源代码,我看到: <project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-

在pom.xml中定义数据时,我试图遵循最佳实践,因此我开始研究Spring源代码,我看到:


<project xmlns="http://maven.apache.org/POM/4.0.0"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.springframework</groupId>
  <artifactId>spring-aop</artifactId>
  <packaging>jar</packaging>
  <version>3.1.1.RELEASE</version>
.....

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${project.version}</version>
      <scope>compile</scope>
</dependency>

---

<dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <scope>test</scope>
</dependency>
-----


4.0.0声明您明确依赖的依赖项,无论它是提供您直接导入和使用的类,还是提供您直接使用的服务,如Log4J。可传递依赖项应该只提供运行时需要的依赖项,但您不需要自己使用这些依赖项。

这有两个部分:

log4j是为“test”范围声明的,它不会成为最终输出(jar/war…)的一部分。因此,当Springbean的测试(范围)依赖于log4j时,这并不意味着在提供的或运行时(范围)使用Springbean的项目存在可传递的依赖关系

依赖范围-这允许您仅包括适合于构建当前阶段的依赖项。。。测试: 此范围表示应用程序的正常使用不需要依赖项,仅在测试编译和执行阶段可用。(阿帕奇)

第二部分:

如果未指定依赖项的版本,则依赖于“其他”pom来管理依赖项。因此,依赖关系是可传递的,由其他人管理。“依赖关系管理”

依赖关系管理-这允许项目作者直接指定在可传递依赖关系或未指定版本的依赖关系中遇到的工件的版本。(阿帕奇)


Hi devbinoh,关于“log4j是为“测试”范围声明的,它不会是最终输出(jar/war…)的一部分。因此,当Springbean依赖log4j进行测试(范围)时,这并不意味着在提供的或运行时(范围)使用Springbean的项目存在可传递的依赖关系。”:如果您依赖junit依赖项是可传递的这一事实,那么我已经检查过了,并且一切正常。。。。这可能是关于spring用法的其他解释吗?是的,你是对的。在本例中,Log4j依赖于可传递依赖项。为什么?第二部分是通过“依赖关系管理”实现的可传递依赖关系。当您没有“指定”依赖项的版本号时,您依赖于“其他人”来指定它,因此,它是功能依赖项。我回答的第一部分是指出这些依赖项的作用域,知道作用域只能在其作用域上传递。然而,对于spring,我认为第二部分适用。