在maven版本上更新README中包含的版本

Toi*_*lal 5 java maven

我在github上维护一个开源项目,其中包含README.md包含当前版本项目的安装说明的文件1.0.0-SNAPSHOT.

将新版本发布到maven central时,是否可以自动更新此中包含的版本号README.md

版本执行时maven-release-plugin,pom.xml中的版本已更新,但我在文档中找不到任何正确更新此外部文件的内容.

例:

README.md文件目前在1.0.0-SNAPSHOT.它位于maven源/资源之外,但它是在git上管理的.on mvn release:prepare,它应该更新为1.0.0,然后maven应该在标记新版本之前提交/推送更改.然后,mvn release:perform它应该转到下一个开发版本1.0.1-SNAPSHOT.

(链接到项目)

Mar*_*ter 7

您可以像评论中提到的那样使用 maven-resources-plugin。

我没有尝试,但配置应该是这样的:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-resources-plugin</artifactId>
  <version>3.0.1</version>
  <executions>
    <execution>
      <id>readme-md</id>
      <phase>process-resources</phase>
      <goals>
        <goal>copy-resources</goal>
      </goals>
      <configuration>
        <outputDirectory>${project.basedir}</outputDirectory>
        <resources>                                        
          <resource>
            <directory>${project.basedir}</directory>
            <includes>
              <include>README.md</include>
            </includes>
            <filtering>true</filtering>
          </resource>
        </resources>
        <encoding>UTF-8</encoding>
      </configuration>            
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

在你的 README.md 中,你想要的版本是你放置占位符的地方${project.version}

这里结合的两个功能是复制资源过滤

我们告诉插件将资源从${project.basedir}maven 解析到根目录的目录复制到根目录,但只包含匹配README.md.

过滤选项用变量替换所有占位符,这些变量可以定义为系统属性、项目属性、在 pom.xml 或命令行中定义的过滤器资源。在这种情况下,我们使用项目属性version

尽管评论是正确的,但最终会出现不一致的情况,以防发布出错。您可以通过在成功mvn resources:resources后显式调用来克服这个问题mvn release:perform。我希望这有帮助。

  • 问题是它仅适用于第一个版本。对于下一个版本,{$project.version} 占位符将替换为有效的项目版本。我需要找到一种方法在发布后将它们恢复回来...... (4认同)
  • 正确的。没有想到这一点。我建议将 README.md 放在 src/main/doc 下并将其从其复制到根文件夹 (2认同)