我们使用 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/