【问题标题】:Maven: remove a single transitive dependencyMaven:删除单个传递依赖
【发布时间】:2009-05-03 11:47:33
【问题描述】:

我的项目包含一个 jar 文件,因为它被列为传递依赖项。

但是,我已经证实,我不仅不需要它,而且还会导致问题,因为 jar 文件中的类会影响我在另一个 jar 文件中需要的类。

如何从传递依赖项中删除单个 jar 文件?

【问题讨论】:

    标签: java maven-2 dependencies


    【解决方案1】:

    您可以通过以下方式排除依赖项:

            <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                    <version>2.5.6</version>
                    <exclusions>
                            <exclusion>
                                    <groupId>commons-logging</groupId>
                                    <artifactId>commons-logging</artifactId>
                            </exclusion>
                    </exclusions>
            </dependency>
    

    【讨论】:

      【解决方案2】:

      正确的方法是使用排除机制,但有时您可能更喜欢使用以下技巧来避免在许多工件具有您希望忽略的相同传递依赖项时添加大量排除项。您无需指定排除项,而是定义一个范围为“已提供”的附加依赖项。这告诉 Maven 您将在运行时手动提供此工件,因此它不会被打包。例如:

          <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring</artifactId>
                  <version>2.5.6</version>
          </dependency>
          <dependency>
                  <groupId>commons-logging</groupId>
                  <artifactId>commons-logging</artifactId>
                  <version>1.1.1</version>
                  <scope>provided</scope>
          </dependency>
      

      副作用:您必须指定要忽略的工件的 a 版本,它的 POM 将在构建时检索;这不是常规排除的情况。如果您在防火墙后面运行私有 Maven 存储库,这可能会给您带来问题。

      【讨论】:

      • 我一直试图通过 ole 方法将 servlet-api 从 jar 依赖项中排除,但这对我不起作用,但尝试了这种方法,它成功了。谢谢。
      • 当我不得不排除基于 的依赖项时,这对我有用。谢谢!
      • 如果您的依赖项包含在 JRE 中,您也可以使用 system 范围。以 jaxb-api 2.0 和 JRE 6 为例。请参阅 Maven System Dependencies
      【解决方案3】:

      您可以通过明确排除有问题的工件来做到这一点。取包含问题的依赖项并将其标记为排除:

      来自 maven website:

      <dependency>
        <groupId>group-a</groupId>
        <artifactId>artifact-a</artifactId>
        <version>1.0</version>
        <exclusions>
          <exclusion>
            <groupId>group-c</groupId>
            <artifactId>excluded-artifact</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      

      【讨论】:

        猜你喜欢
        • 2018-07-06
        • 2019-10-29
        • 2021-10-24
        • 1970-01-01
        • 1970-01-01
        • 2016-04-20
        • 2013-02-17
        • 2019-08-23
        相关资源
        最近更新 更多