Maven 为什么我的war文件包含不在我的树中的依赖项?
我有一个用maven开发的应用程序 首先,我运行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
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>