2026-02-23

更新 maven 專案版本

可以直接使用指令來更新版本

mvn versions:set -DnewVersion={ 版本號 }

例如我原本是

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example.foo</groupId>
  <artifactId>bar-app</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>bar-app</name>
  <!-- 中略 -->
</project>

執行 mvn versions:set -DnewVersion=1.0.3-SNAPSHOT,就會變成

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example.foo</groupId>
  <artifactId>bar-app</artifactId>
  <version>1.0.3-SNAPSHOT</version> <!-- 這邊更新了 -->

  <name>bar-app</name>
  <!-- 中略 -->
</project>

舊版本條件

如果限定 n 版本以前的才進行更新,例如 1.0.* 版本更新至 1.1.0 版,用 -DoldVersion 參數處理,例如

mvn versions:set -DoldVersion=1.0.* -DnewVersion=1.1.0

根據舊版本號,是否更新可參照下表

舊版本 是否更新至 1.1.0 版
1.0-SNAPSHOT
1.0.0-SNAPSHOT
1.0.1
1.1.0-SNAPSHOT
2

指定 module

如果要更新不同指定 module ,可以用 groupId 或者 artifactId 參數來告知,例如:

mvn versions:set -DgroupId=com.example.bar -DnewVersion=1.1.0
mvn versions:set -DgroupId=com.example.bar -DartifactId=foobar -DnewVersion=1.1.0

參考資料

Connolly, S. (2009, May 25). Changing the Project Version. MojoHaus. https://www.mojohaus.org/versions/versions-maven-plugin/examples/set.html

沒有留言:

張貼留言