Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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
Java 我是否必须提到pom.xml中的直接依赖项,它们也是可传递依赖项?_Java_Maven_Maven Dependency - Fatal编程技术网

Java 我是否必须提到pom.xml中的直接依赖项,它们也是可传递依赖项?

Java 我是否必须提到pom.xml中的直接依赖项,它们也是可传递依赖项?,java,maven,maven-dependency,Java,Maven,Maven Dependency,考虑到log4j是项目a的直接依赖项,而项目a是项目B的直接依赖项,因此log4j是项目B的可传递依赖项。现在,当我尝试编译项目B时,它失败了,错误是:“package org.apache.log4j不存在” 那么,有没有一种方法可以编译项目B而不将log4j作为其直接依赖项 我正在Centos平台上使用maven 3.2.5 编辑: 我在项目A的pom.xml文件中有以下代码: <dependency> <groupId>log4j</g

考虑到log4j是项目a的直接依赖项,而项目a是项目B的直接依赖项,因此log4j是项目B的可传递依赖项。现在,当我尝试编译项目B时,它失败了,错误是:“package org.apache.log4j不存在”

那么,有没有一种方法可以编译项目B而不将log4j作为其直接依赖项

我正在Centos平台上使用maven 3.2.5

编辑: 我在项目A的pom.xml文件中有以下代码:

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>
<dependency>
    <groupId>group.id</groupId>
    <artifactId>A</artifactId>
    <version>version of A</version>
</dependency>
并使用“mvn安装文件”安装了工件

然后,我将以下内容放在项目B的pom.xml文件中:

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>
<dependency>
    <groupId>group.id</groupId>
    <artifactId>A</artifactId>
    <version>version of A</version>
</dependency>

组id
A.
版本

如果它是可传递依赖项,则不需要显式声明它。请显示pom文件的相关部分。如果您直接使用它,最好也直接将其声明为依赖项(即使您也通过传递依赖项获得)。这是为了避免在不相关的版本升级导致可传递导入中断时出现意外情况。请参阅