Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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
Java Maven:当战争发生时,你怎么可能获得依赖;它不在依赖关系树中吗?_Java_Maven_War - Fatal编程技术网

Java Maven:当战争发生时,你怎么可能获得依赖;它不在依赖关系树中吗?

Java Maven:当战争发生时,你怎么可能获得依赖;它不在依赖关系树中吗?,java,maven,war,Java,Maven,War,我有一个war文件,当我运行mvn package时,它在WEB-INF/lib中获得一个slf4j-jdk14依赖项,我不知道它是如何进入的。CD插入战争指挥器并运行mvn dependency:tree-Dverbose。提到slf4j-jdk14的唯一一行是: [INFO] +- org.slf4j:slf4j-jdk14:jar:1.6.1:provided 您可以在此处看到完整的输出: 我可以在pom中注释掉这个依赖项。当我这样做时,mvn-dependency:tree-Dv

我有一个war文件,当我运行
mvn package
时,它在WEB-INF/lib中获得一个slf4j-jdk14依赖项,我不知道它是如何进入的。CD插入战争指挥器并运行
mvn dependency:tree-Dverbose
。提到slf4j-jdk14的唯一一行是:

[INFO]    +- org.slf4j:slf4j-jdk14:jar:1.6.1:provided
您可以在此处看到完整的输出:

我可以在pom中注释掉这个依赖项。当我这样做时,
mvn-dependency:tree-Dverbose
根本没有提到slf4j-jdk14。但是,如果我运行
mvncleanpackage
war中仍然有这个jar

这怎么可能?
dependency:tree
是否仅显示部分图片?这是一只maven臭虫吗

$ mvn -version
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 08:22:22-0700)
如果我运行
help:effective pom
只引用了slf4j-jdk14,则该行不包括它。war插件在我看来是标准的,以下是输出:

  <plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
    <executions>
      <execution>
        <id>default-war</id>
        <phase>package</phase>
        <goals>
          <goal>war</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

maven战争插件
2.1.1
默认战争
包裹
战争
虽然我很想为此提供pom,但我不能,因为我的公司不允许。我曾尝试在一个示例项目中复制此内容,但未能成功。我希望一些专家能为我指出一条调试这个jar的途径,因为在我对maven的理解中,这是不可能的

对于前面的问题,war插件在复制依赖项时似乎并不排除jar,即使排除了可传递依赖项。因此,您可以尝试排除pom中的其他一些可传递依赖项,并检查它是否未被复制。如果仍被复制,则表示您的slf4j-jdk14以相同的方式被复制


如果是这种情况,您可以尝试使用排除它。

请附加整个依赖项:treeTry 3.1。另外,运行help:effectivepom,看看是否有人配置了对war插件没有帮助的东西。@b我更新了argulies并运行了help:effectivepom。我没有看到任何效果。@MariuszS看到我的更新。我把它放在一个gistOK中,但是我说,“我可以在pom中注释掉这个依赖项。当我这样做时,
mvn依赖项:tree-Dverbose
根本没有提到slf4j-jdk14。”这难道不意味着war插件甚至看不到slf4j-jdk14,不管是否可以传递?顺便说一句,我认为war插件配置可能会解决我的问题(我会尝试一下,让你知道),但在我将其标记为答案之前,我想自信地理解为什么会发生这种情况。@tieTYT从我从链接中了解到,war插件似乎不适用于依赖关系树。也许它有自己的逻辑来确定哪些JAR应该被复制,以及该逻辑(可能是mistke?)不排除使用exclude标记排除的工件。