[英]How does Maven dependency resolution work when using released artifacts?
我有一个多模块 Maven 项目,如下所示:
最终,当我发布 package 时,这个库的使用者应该需要的唯一依赖项是:
我注意到如果我只部署 All 和 JarFile,并且只将这两个依赖项添加到消费项目并构建我的消费项目,我会收到 maven 构建错误,提示找不到脚本、资源和前端(因为它们被 All 引用绒毛)
Q1:当直接使用 All 工件时(在其构建状态下),为什么 Maven 关心它是否无法解决所有 pom 的依赖项? 这些应该是 All 项目的实施细节吗?
Maven 3通过设计传递地解决依赖关系。
Q2:有什么方法可以配置发布,这样我只需要发布 All zip 和 JarFile jar 工件吗? 而不是这些“实现细节”工件?
是的,您可以使用flatten-maven-plugin
在使用使用页面上描述的配置发布之前扁平化 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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.