我有一个 Maven 聚合器项目 X,由模块 A 和 B 组成。在交付管道的第一阶段,我想构建 X 的当前快照版本,但强制所有依赖项都是发布版。 (目的是确保项目处于可发布状态,其中发布不得有快照依赖。)
A 和 B 将 X 称为它们的父级,并且(使事情复杂化)B 具有 A 作为依赖项。 (我配置了 Maven Enforcer 插件以应用 Reactor 模块收敛规则。)
是否可以说服 maven-enforcer-plugin 强制执行所有依赖项的发布版本,当前 react 堆构建中的项目除外?
最佳答案
requireReleaseDeps
中内置了导入/导出机制Maven Enforcer Plugin 的规则.例如,如果你想要求所有依赖项都使用发布版本,除了那些位于组 ID my-group-id
中的依赖项。 ,你会:
<requireReleaseDeps>
<message>No Snapshots Allowed!</message>
<excludes>
<exclude>my-group-id:*</exclude>
</excludes>
</requireReleaseDeps>
传递给包含或排除的字符串记录在 AbstractStrictPatternArtifactFilter
中类:它们遵循格式 [groupId]:[artifactId]:[type]:[version]
,其中每个部分还可以包含通配符 *
.
如果您的 react 器中的所有项目都共享相同的组 ID,则此方法工作正常。您还可以添加更多 <exclude>
元素通过指定它们的每个 Artifact ID 来专门针对每个项目。 MENFORCER-185是添加 allowSnapshotsInReactor
的增强请求 boolean 值并以不同于 include/exclude 的方式处理来自 react 器的项目,这将提供更清洁的解决方案,但截至目前尚未解决。
关于java - 强制发布依赖性,但来自同一构建的模块除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40591346/