2

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

  • 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 的库。

4

2 回答 2

6

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>
于 2012-04-25T07:32:48.677 回答
0

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

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

于 2012-04-25T07:47:19.503 回答