【问题标题】:How does Maven dependency resolution work when using released artifacts?使用已发布的工件时,Maven 依赖项解析如何工作?
【发布时间】:2021-04-06 15:07:15
【问题描述】:

我有一个多模块 Maven 项目,如下所示:

  • 反应器 -> 类型 pom
    • 全部 -> 输入 zip
    • 脚本 -> 输入 zip
    • 资源 -> 输入 zip
    • 前端 -> 输入 pom
    • JarFile -> 输入 jar

最终,当我将它打包发布时,这个库的使用者应该需要的唯一依赖项是:

  • 全部(在构建时嵌入脚本、资源、JarFile 和前端的文件)
  • JarFile(如果他们想针对此 Jar 中定义的公共 Java API 进行开发,将使用它)

我注意到,如果我只部署 All 和 JarFile,并且只将这两个依赖项添加到消费项目并构建我的消费项目,我会收到 maven 构建错误,提示找不到脚本、资源和前端(因为它们被引用由所有人的pom)

  1. 当直接使用 All 工件时(在其构建状态下),为什么 Maven 会关心它是否无法解析 All pom 的依赖项?这些应该是 All 项目的实施细节吗?
  2. 有什么方法可以配置发布,这样我只需要发布所有 zip 和 JarFile jar 工件吗?而不是这些“实现细节”工件?

【问题讨论】:

    标签: maven maven-release-plugin


    【解决方案1】:

    Q1:直接使用 All 工件时(在其构建状态下),为什么 Maven 会关心它是否无法解析 All pom 的依赖项?这些应该是 All 项目的实施细节吗?

    Maven 3 解决依赖关系 transitively 按设计

    Q2:有什么方法可以配置发布,这样我只需要发布所有 zip 和 JarFile jar 工件吗?而不是这些“实现细节”工件?

    是的,您可以使用flatten-maven-plugin 在发布之前使用usage 页面上描述的配置来展平POM:

      <build>
        <plugins>
          ...
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>flatten-maven-plugin</artifactId>
            <!--<version>1.2.2</version>-->
            <configuration>
              <flattenMode>minimum</flattenMode>
            </configuration>
            <executions>
              <!-- enable flattening -->
              <execution>
                <id>flatten</id>
                <phase>process-resources</phase>
                <goals>
                  <goal>flatten</goal>
                </goals>
              </execution>
              <!-- ensure proper cleanup -->
              <execution>
                <id>flatten.clean</id>
                <phase>clean</phase>
                <goals>
                  <goal>clean</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    

    【讨论】:

      猜你喜欢
      • 2016-04-15
      • 2018-08-16
      • 2011-09-30
      • 2022-11-25
      • 1970-01-01
      • 2012-12-15
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多