代码之家  ›  专栏  ›  技术社区  ›  Dancrumb

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

  •  1
  • Dancrumb  · 技术社区  · 8 年前

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

    首先,我跑步 mvn clean .

    然后,在我构建它之后,我发现我得到了 jackson-databind 震击器:

    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的迹象

    有什么好处?我是不是误解了这份报告,因为我们显然是为了 一些 原因

    换一种方式来说(让它不那么宽泛),maven怎么能引入一个没有在依赖关系树中列出的依赖关系呢?

    1 回复  |  直到 8 年前
        1
  •  3
  •   eliocs    8 年前

    rogue文件的源是WAR依赖项,而不是JAR依赖项。

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

    正在执行

    find target/ -name jackson-databind-\*.jar
    

    列出它们全部。他们出现在 target/war/work 目录,该目录为您提供指向它们来自何处的指针。

    需要在配置 maven-war-plugin :

    <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>