【发布时间】:2016-04-10 07:39:30
【问题描述】:
我在 github 上维护一个开源项目,该项目包含 README.md 文件,安装说明包含项目的当前版本 1.0.0-SNAPSHOT。
发布新版本到maven central时,是否可以自动更新README.md中包含的这个版本号?
使用maven-release-plugin 执行发布,pom.xml 中的版本更新良好,但我在文档中找不到任何内容来正确更新此外部文件。
例子:
README.md 文件当前位于1.0.0-SNAPSHOT。它位于 Maven 源/资源之外,但它在 git 上进行管理。在mvn release:prepare 上,它应该更新为1.0.0,然后maven 应该在标记新版本之前提交/推送更改。然后,在mvn release:perform 上应该转到下一个开发版本1.0.1-SNAPSHOT。
【问题讨论】:
-
@Marged 不,不要认为它是一样的。就我而言,
README.md文件不在 Maven 源代码中,但在 git 上进行管理。因此,我希望发布插件使用新版本对其进行更新,然后在mvn release:prepare期间在 git 上标记新版本之前提交/推送更改。在mvn release:perform上,它应该会转到下一个开发版本,例如1.0.1-SNAPSHOT。 -
这很棘手。
README.md是一个不应在最终 JAR 中的外部文件。这意味着您需要在发布之前替换该令牌,提交更改,将其推送并将文件回滚到该令牌。由于prepare和perform有两个步骤,我什至不确定你能否有效地做到这一点。如果您在之后执行prepare和clean会怎样?然后README会被改变,除非你手动回滚。 -
@Tunaki 是的,这是我认为的主要问题。此外,
release:perform要求将所有更改推送到 git,因此在此阶段对README.md文件进行更改会破坏事情......除非立即将更改推送到 git。如果现在什么都不存在,也许我可以尝试编写一个 Maven 插件来执行此操作?不使用令牌,而是用新版本替换旧版本的简单字符串 -
我认为这里存在概念问题。版本替换不是问题:您可以在发布前执行一个目标,并使用
maven-replacer-plugin替换令牌。但问题是确保在出现问题时不会产生副作用。