Maven Surefire Plugin 版本混乱
Maven Surefire Plugin version confusion
我是这样添加插件的:
<maven.surefire.version>3.0.0-M5</maven.surefire.version>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.version}</version>
<configuration>
<parallel>methods</parallel>
<useUnlimitedThreads>true</useUnlimitedThreads>
</configuration>
</plugin>
……一切顺利。
我将版本更改为 2.22.2 并得到错误:Plugin 'org.apache.maven.plugins:maven-surefire-plugin:2.22.2' not found
。
但是,当我在 IntelliJ 中进行工件搜索时,它确实找到了那个版本。好的,我将更改恢复到原来的版本。
现在,当我 运行 mvn test
以下内容引起了我的注意:
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ regression-tests ---
为什么不使用 3.0.0-M5? 2.12.4 从何而来?我在 'surefire' 上的 pom.xml 中进行了搜索,但除了上面显示的内容外,没有其他匹配出现。
查看 IntelliJ 的首选项,我发现正在使用的存储库是 https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-surefire-plugin/,并且提到的所有版本都在那里。
谁能给我解释一下这是怎么回事?为什么找不到 2.22.2?为什么显示使用的是 2.12.4 而 3.0.0-M5 在 pom.xml?
为了完整起见,这是我的 mvn:
❯ mvn --version
Apache Maven 3.8.2 (ea98e05a04480131370aa0c110b8c54cf726c06f)
Maven home: /opt/homebrew/Cellar/maven/3.8.2/libexec
Java version: 1.8.0_292, vendor: Azul Systems, Inc., runtime: /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "11.5.2", arch: "aarch64", family: "mac"
Okay, I revert the change back to the original version I had.
更改 pom.xml 文件后,在 Maven 工具 window 中调用 Reload 操作。
可以看到Maven工具中使用的插件版本window:
您还可以在 IDE 中使用 Show Effective POM 操作来查看此 Maven 项目中使用的所有实际依赖项、插件及其版本:
我是这样添加插件的:
<maven.surefire.version>3.0.0-M5</maven.surefire.version>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.version}</version>
<configuration>
<parallel>methods</parallel>
<useUnlimitedThreads>true</useUnlimitedThreads>
</configuration>
</plugin>
……一切顺利。
我将版本更改为 2.22.2 并得到错误:Plugin 'org.apache.maven.plugins:maven-surefire-plugin:2.22.2' not found
。
但是,当我在 IntelliJ 中进行工件搜索时,它确实找到了那个版本。好的,我将更改恢复到原来的版本。
现在,当我 运行 mvn test
以下内容引起了我的注意:
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ regression-tests ---
为什么不使用 3.0.0-M5? 2.12.4 从何而来?我在 'surefire' 上的 pom.xml 中进行了搜索,但除了上面显示的内容外,没有其他匹配出现。
查看 IntelliJ 的首选项,我发现正在使用的存储库是 https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-surefire-plugin/,并且提到的所有版本都在那里。
谁能给我解释一下这是怎么回事?为什么找不到 2.22.2?为什么显示使用的是 2.12.4 而 3.0.0-M5 在 pom.xml?
为了完整起见,这是我的 mvn:
❯ mvn --version
Apache Maven 3.8.2 (ea98e05a04480131370aa0c110b8c54cf726c06f)
Maven home: /opt/homebrew/Cellar/maven/3.8.2/libexec
Java version: 1.8.0_292, vendor: Azul Systems, Inc., runtime: /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "11.5.2", arch: "aarch64", family: "mac"
Okay, I revert the change back to the original version I had.
更改 pom.xml 文件后,在 Maven 工具 window 中调用 Reload 操作。
可以看到Maven工具中使用的插件版本window:
您还可以在 IDE 中使用 Show Effective POM 操作来查看此 Maven 项目中使用的所有实际依赖项、插件及其版本: