当使用发布的工件时,Maven依赖项解析是如何工作的?

当使用发布的工件时,Maven依赖项解析是如何工作的?,maven,maven-release-plugin,Maven,Maven Release Plugin,我有一个多模块Maven项目,看起来像: 反应器->聚甲醛型 全部->类型拉链 脚本->键入zip 资源->键入zip 前端->类型pom JarFile->type jar 最终,当我将其打包发布时,此库的使用者应该需要的唯一依赖项是: 全部(在构建时嵌入脚本、资源、JarFile和前端文件) JarFile(如果他们想要根据这个Jar中定义的公共JavaAPI进行开发,可以使用它) 我注意到,如果我只部署All和JarFile,并且只将这两个依赖项添加到一个消费项目并构建我的消

我有一个多模块Maven项目,看起来像:

  • 反应器->聚甲醛型
    • 全部->类型拉链
    • 脚本->键入zip
    • 资源->键入zip
    • 前端->类型pom
    • JarFile->type jar
最终,当我将其打包发布时,此库的使用者应该需要的唯一依赖项是:

  • 全部(在构建时嵌入脚本、资源、JarFile和前端文件)
  • JarFile(如果他们想要根据这个Jar中定义的公共JavaAPI进行开发,可以使用它)
我注意到,如果我只部署All和JarFile,并且只将这两个依赖项添加到一个消费项目并构建我的消费项目,我会收到maven构建错误,说找不到脚本、资源和前端(因为它们被All的pom引用)

  • 当直接使用All工件(在构建状态下)时,如果Maven不能解析All-pom的依赖关系,为什么它会在意呢?这些应该是所有项目的实施细节吗
  • 是否有任何方法可以配置发布,以便只需发布所有zip和JarFile jar工件?而不是这些“实现细节”工件
  • Q1:当直接使用All工件(在其构建状态下)时,如果Maven不能解析All pom的依赖项,为什么它会在意呢?这些应该是所有项目的实施细节吗

    Maven 3通过设计解决依赖关系

    Q2:有没有办法配置发布版,只需发布所有zip和JarFile jar工件?而不是这些“实现细节”工件

    是的,您可以在发布前使用第页所述的配置展平POM:

    
    ...
    org.codehaus.mojo
    扁平maven插件
    最低限度
    压平
    过程资源
    压平
    弄平
    清洁的
    清洁的
    
      <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>