【问题标题】:Find out dependency issuer找出依赖发行者
【发布时间】:2012-04-25 07:30:26
【问题描述】:

我在我的网络项目中使用以下库:

  • slf4j-log4j12-1.6.4.jar
  • slf4j-api-1.6.0.jar
  • log4j-1.2.16.jar
  • jcl-over-slf4j-1.6.0.jar

当我组装战争时,一个额外的 commons-logging-1.0.4.jar 库被复制到 WEB-INF/lib。我认为这是因为我的一个库依赖于 commons-logging-1.0.4.jar。 我想使用

排除 commons-logging-1.0.4.jar(由于 jcl-over-slf4j-1.6.0.jar 已经在这里)
<dependency>
    <groupId></groupId>
    <artifactId></artifactId>
    <version></version>
    <exclusions>
           ...
    </exclusions>
</dependency>

为此,我需要在我的 pom 中找到依赖于 commons-logging 的库。

【问题讨论】:

    标签: java maven dependencies


    【解决方案1】:

    您可以使用mvn dependency:tree 命令找到依赖关系树。

    从树中,您可以排除工件。

    示例输出:

    [INFO] |  +- org.seleniumhq.selenium:selenium-htmlunit-driver:jar:2.20.0:test
    [INFO] |  |  +- org.seleniumhq.selenium:selenium-api:jar:2.20.0:test
    [INFO] |  |  +- net.sourceforge.htmlunit:htmlunit:jar:2.9:test
    [INFO] |  |  |  +- xalan:xalan:jar:2.7.1:test
    [INFO] |  |  |  |  \- xalan:serializer:jar:2.7.1:test
    [INFO] |  |  |  +- commons-collections:commons-collections:jar:3.2.1:test
    [INFO] |  |  |  +- commons-lang:commons-lang:jar:2.6:test
    [INFO] |  |  |  +- org.apache.httpcomponents:httpmime:jar:4.1.2:test
    [INFO] |  |  |  +- commons-codec:commons-codec:jar:1.4:test
    [INFO] |  |  |  +- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.9:test
    [INFO] |  |  |  +- xerces:xercesImpl:jar:2.9.1:test
    [INFO] |  |  |  |  \- xml-apis:xml-apis:jar:1.3.04:test
    

    如果依赖是传递的,你可以根据上面的树做如下:

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-htmlunit-driver</artifactId>
        <version>2.20</version>
    </dependency>
    <dependency>
        <groupId>net.sourceforge.htmlunit</groupId>
        <artifactId>htmlunit</artifactId>
        <version>2.9</version>
        <!-- i dont want u -->
        <exclusions>
            <exclusion>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    【讨论】:

    • 正是我需要的。谢谢。
    【解决方案2】:

    如果您正在使用 WAR 覆盖功能,而 依赖关系树 的其他答案不起作用,请检查相关库是否未通过覆盖的 WAR 文件之一。作为覆盖的一部分,Maven 正在扩展覆盖的 WAR 文件的 WEB-INF/lib 文件夹,基本上包括生成的 WAR 文件中的所有内容。

    要排除一些以这种方式传入的文件,您可以使用 WAR 插件的dependentWarExcludes 功能:http://maven.apache.org/plugins/maven-war-plugin/examples/war-overlay.html

    【讨论】:

      猜你喜欢
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 2021-09-23
      • 2011-06-03
      • 2019-03-12
      • 1970-01-01
      相关资源
      最近更新 更多