Java 如何使用maven版本插件选择下一个版本号?

Java 如何使用maven版本插件选择下一个版本号?,java,maven,Java,Maven,我有一个maven项目结构,看起来像这样 project/ pom.xml // parent and aggregator pom module1/ pom.xml module2/ pom.xml 我想做的是更改项目版本,从pom.xml开始,一直到子项目 我可以使用versions pluginmvn versions:set-DnewVersion=1.0.3-SNAPSHOT显式指定新版本,它正确地将项目的版本号更改为显式指定的版本 是否有

我有一个maven项目结构,看起来像这样

project/
   pom.xml  // parent and aggregator pom
   module1/
      pom.xml
   module2/
      pom.xml
我想做的是更改项目版本,从pom.xml开始,一直到子项目

我可以使用versions plugin
mvn versions:set-DnewVersion=1.0.3-SNAPSHOT
显式指定新版本,它正确地将项目的版本号更改为显式指定的版本

是否有一种方法可以使用版本插件,以便它根据当前版本号自动选择下一个版本号

  • 如果版本号为0.0.1-SNAPSHOT,则应选择0.0.1作为下一个版本
  • 如果版本号为0.0.1,则应选择0.0.2-SNAPSHOT作为下一个版本

    • 我也有类似的需求,我决定实现一个外部bash脚本来管理它

      我们不使用maven发布插件,因为我们不使用快照,也不使用SCM连接

      我从pom.xml加载当前版本

      当前版本=`echo-e'setns x=\ncat/x:project/x:VERSION/text()'| xmllint--shell pom.xml | grep-v/`

      并在其上运行一些逻辑以设置新版本。然后,我跑

      mvn版本:set-DnewVersion=$MY\u NEW\u值

      之后,我运行构建

      下面是我所做工作的一般示例

      #!/bin/bash
      # Increment an existing version in pom.xml and run a new build with it
      
      # Error message and exit 1
      abort()
      {
          echo;echo "ERROR: $1";echo
          exit 1
      }
      
      # Accept a version string and increment its last element (assume string is passed correctly)
      incrementVersionLastElement()
      {
          IN=$1
      
          VER1=`echo $IN | awk -F\. 'BEGIN{i=2}{res=$1; while(i<NF){res=res"."$i; i++}print res}'`
          VER2=`echo $IN | awk -F\. '{print $NF}'`
          VER2=`expr $VER2 + 1`
          OUT="$VER1.$VER2"
      
          echo $OUT
      }
      
      # Getting project version from pom.xml
      PROJECT_VERSION=`echo -e 'setns x=http://maven.apache.org/POM/4.0.0\ncat /x:project/x:version/text()' | xmllint --shell pom.xml | grep -v /`
      echo Current project version: $PROJECT_VERSION
      
      NEW_PROJECT_VERSION=`incrementVersionLastElement $PROJECT_VERSION`
      
      # Setting the new version
      mvn versions:set -DnewVersion=$NEW_PROJECT_VERSION
      if [ "$?" != "0" ]
      then
          abort "maven failed"
      fi
      
      # Run the maven main build
      mvn clean install
      if [ "$?" != "0" ]
      then
          abort "maven failed"
      fi
      
      #/bin/bash
      #在pom.xml中增加一个现有版本,并使用它运行一个新的构建
      #错误消息并退出1
      中止
      {
      echo;echo“错误:$1”;echo
      出口1
      }
      #接受一个版本字符串并递增其最后一个元素(假设字符串传递正确)
      IncrementVersionLasteElement()
      {
      英寸=1美元
      
      VER1=`echo$IN | awk-F\.'BEGIN{i=2}{res=$1;而(iDid你看了发布插件了吗?@Henry我正在实施JavaOne视频中描述的与maven进行持续集成的策略,如果你看的话,它将解释为什么发布插件不适合用于持续交付。你能详细说明需要安装哪些命令行实用程序来实现这一点吗工作。shell脚本代码也可以吗?我实际上不使用任何特殊工具。我只是获取版本,使用sed s/\.//g或tr','',将其拆分,然后使用expr$VAL+1处理我需要的数字,并运行mvn命令。实现非常适合我们的环境。如果需要通用示例,请告诉我。通用示例将是b太棒了