java - 强制发布依赖性,但来自同一构建的模块除外

标签 java maven

我有一个 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/

相关文章:

java - 告诉 Java 编译器在运行时可以访问该字段?

java - Web 套接字与间隔轮询

Java 属性与 Android SharedPreferences

java - 是否有针对 maven-javadoc-plugin 错误 MJAVADOC-414 的解决方法?

java - 使用 Maven Jaxb 编译时如何在目标 Jar 文件中包含 Xml 模式/资源?

java - Android url.openstream() 抛出 fileNotFound

java - 静态最终字段的同步 getter

java - 为什么maven依赖中的版本号有时会被跳过?

java - 强制 Maven Wagon 插件进行 POST 而不是 PUT

java - 如何在java中将依赖项添加到jar文件中