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
Maven 为什么我的war文件包含不在我的树中的依赖项?_Maven_Dependencies - Fatal编程技术网

Maven 为什么我的war文件包含不在我的树中的依赖项?

Maven 为什么我的war文件包含不在我的树中的依赖项?,maven,dependencies,Maven,Dependencies,我有一个用maven开发的应用程序 首先,我运行mvnclean 然后,在我构建它之后,我发现我得到了两个jackson数据绑定jar的副本: ls target/ROOT/WEB-INF/lib | grep jackson jackson-annotations-2.8.9.jar jackson-core-2.8.9.jar jackson-databind-2.4.4.jar jackson-databind-2.8.9.jar 然而,当我跑的时候 mvn dependency:tre

我有一个用maven开发的应用程序

首先,我运行
mvnclean

然后,在我构建它之后,我发现我得到了两个
jackson数据绑定
jar的副本:

ls target/ROOT/WEB-INF/lib | grep jackson
jackson-annotations-2.8.9.jar
jackson-core-2.8.9.jar
jackson-databind-2.4.4.jar
jackson-databind-2.8.9.jar
然而,当我跑的时候

mvn dependency:tree
我只看到提到

com.fasterxml.jackson.core:jackson-databind:jar:2.8.9:compile
即使我运行
mvn dependency:tree-Dverbose=true
,树中也没有2.4.4的迹象

有什么好处?我是不是误会了这份报告,因为我们显然是出于某种原因而加入了2.4.4


换句话说(为了不太宽泛),maven怎么能引入一个未在依赖关系树中列出的依赖关系?

恶意文件的源是WAR依赖关系,而不是JAR依赖关系

我不相信这些在树上是可见的,因为它们本身并没有“解决”。。。它们只是复制过来的

把它们都列出来。它们显示在
target/war/work
目录中,该目录为您提供了指向它们来源的指针

需要在
maven-war插件的配置中排除它们:

<configuration>                                                           
    <overlays>                                                            
        <overlay>                                                         
            <groupId>com.group</groupId>                                 
            <artifactId>artifact-you-depend-on</artifactId>                 
            <excludes>                                                    
                <exclude>WEB-INF/lib/jackson-databind-2.4.4.jar</exclude> 
            </excludes>                                                   
        </overlay>                                                        
    </overlays>                                                           
</configuration>                                                          

com.group
你所依赖的人工制品
WEB-INF/lib/jackson-databind-2.4.4.jar

运行命令时,如果将标志设置为
true
,您会看到什么?(
-Dverbose=true
)可能相关:您是否运行了
mvn clean
以确保没有早期版本中的旧依赖项?是(问题已更新)如果你没有找到其他的线索,除了有一些不同的错误…请显示你的pom文件…制作
mvn clean package
制作
解压-t XYZ.war
并查看那里是否有其他版本…如果没有真正的项目,很难找到问题…错误的方法。最好是给他们范围:提供…手动排除是一种气味…是的。。。这种依赖很难闻,但我不拥有它
<configuration>                                                           
    <overlays>                                                            
        <overlay>                                                         
            <groupId>com.group</groupId>                                 
            <artifactId>artifact-you-depend-on</artifactId>                 
            <excludes>                                                    
                <exclude>WEB-INF/lib/jackson-databind-2.4.4.jar</exclude> 
            </excludes>                                                   
        </overlay>                                                        
    </overlays>                                                           
</configuration>