2026-02-10

指定 maven 專案的 maven 版本

最近因為 dependbot 的更新,才知道如何指定 maven 專案的 maven 版本。

在專案內加上 <prerequisites> tag 即可

以下這樣就是指定這個專案得用 maven 3.0 才能編譯

<?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">
	<prerequisites>
		<maven>3.0</maven>
	</prerequisites>
	<!-- 其餘省略 -->
</project>

maven compiler / deploy ……等 plugin

我這次發現這問題,是因為 dependbot 提出以下的修改«Bump org.apache.maven.plugins:maven-compiler-plugin from 3.8.1 to 3.14.1»

更新完畢後,我原本使用的 maven v3.5.4 就無法編譯專案了。

後來去查該專案的maven-compiler-plugin-3.8.1、maven-compiler-plugin-3.14.1 這兩個版本差異

可以看到他的 prerequisites > maven 的值,從 3.0 改成 3.6.1 ,所以才沒辦法編譯,得改用 maven v3.6.1 以上的版本才行。

通常 library 都是指定 java 版本,很少會遇到需要指定 maven 版本的

但 maven compiler / deploy ……等 plugin 就不一樣了,這幾個會指定 maven 版本很合理。

沒有留言:

張貼留言