java - 如何使用发布插件在发布期间解析范围

标签 java maven build

我们使用 maven-release-plugin 将我们的 maven 组件发布到存储库。但是,其中一些组件在我们的某些依赖项上使用了范围。我们想要这个是因为一些依赖项经常被释放(快照不是一个选项)

当我们使用发布插件时,范围被 checkin scm 并部署到我们的 maven 仓库。这没有任何意义,因为 Maven 存储库中未解析的 pom 文件可以(并且将)确保其他构建从一个构建更改为另一个构建。

我们尝试使用 release:prepare-with-pom,但只是创建了一个提交给 scm (release-pom.xml) 的新 pom 文件。带有范围的原始 pom 仍然部署到 repo。

作为另一个障碍,我们希望为下一个开发版本保留范围。所以我们的 head/trunk 不应该被解析。

我觉得我们正在以错误的方式解决这个问题。

谁能帮我们解决问题?如果有其他方法可以做到这一点,我们将不胜感激您的建议。

最佳答案

我偶然发现了两个已知的 Maven 发布插件错误。请查看以下错误报告:

这些计划在 maven-release-plugin 的 2.2.3 或 2.3 版本中发布

编辑作为对已发布评论的回应: 我同意这些错误解决我的问题的原因并不明显。我会尽力详细说明。

要让发布插件使用已解析的 pom 文件并部署它,您需要先使用 release:prepare-with-pom,然后使用 release:perform。如果要执行部署解析的 pom 文件,您需要将配置中的 pomFileName 设置为 release-pom.xml。如果不是,它会部署未解析的 pom.xml。部署带有范围的 pom 文件不是一个好主意。这就是需要 618 的原因。

727 是必需的,因为 release-pom.xml 仅在标签上 checkin 。执行发布时:执行您的标签在目标目录中 checkout 。因为 og 这个插件正在模块根目录中寻找 release-pom.xml 并且是空的。如果没有 pomFileName 配置,这也可能出错,但可能性较小。

Ranges 在 Maven 中通常不是一个好主意,因为它有很多问题,而且 Maven 默认情况下不会部署已解析的 pom 文件。如果 Maven 始终部署解析的 pom 文件范围将是一个好主意。

关于java - 如何使用发布插件在发布期间解析范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9666747/

相关文章:

java - 共享 ArrayList 的并发修改异常

java - Groovy 文件在 Java Spring Boot 应用程序中抛出 ClassNotFoundException

windows - 如何确定 SVN 工作副本是否需要更新(从脚本)?

从 Windows 到 Unix 的 Eclipse CDT .cproject 文件

java - Cobertura 未显示继承类的覆盖范围

windows - 在Windows上的Meson Build中链接现有 `.lib`文件

java - 如何为JDialog设置GIF背景?

java - DownloadManager 无法在 Android Q 上运行 - Android/Java

java - Java 5 中注释类型的编译时检查有何变化?

java - 错误: Could not find or load main class in maven project