Maven Surefire插件版本混淆。

3
我这样添加插件:
    <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后,出现错误:找不到插件'org.apache.maven.plugins:maven-surefire-plugin:2.22.2'

然而,当我在IntelliJ中进行工件搜索时,它确实发现了该版本。好的,我将更改恢复为我原来拥有的版本。

现在,当我运行mvn test时,以下内容引起了我的注意:

[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ regression-tests ---

为什么不使用3.0.0-M5?2.12.4是从哪里来的?我在pom.xml中搜索“surefire”,但除了上面显示的内容外,没有其他结果。
通过查看IntelliJ的首选项,我发现正在使用的存储库是https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-surefire-plugin/,并且所有提到的版本都在那里。
有人能解释一下发生了什么吗?为什么它找不到2.22.2?为什么它显示使用2.12.4,而pom.xml中却有3.0.0-M5?
为了完整起见,这是我的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"
1个回答

3

好的,我将更改还原为我之前的原始版本。

在更改 pom.xml 文件后,请在 Maven 工具窗口中调用 Reload(重新加载) 操作。

您可以在 Maven 工具窗口中查看所使用的插件版本:

输入图片说明

您还可以在 IDE 中使用 Show Effective POM(显示有效的 POM) 操作以查看此 Maven 项目中实际使用的所有依赖项、插件及其版本: 输入图片说明


1
在Maven工具窗口中,它显示的是2.12.4。所以,没有什么新的东西。对我来说,“显示有效POM”是新的,但它仍然显示了2.12.4。然而,我注意到Surefire 2.22.2的整个插件部分都消失了。因此,由于这个原因,我找到了问题所在。这个pom文件使用了配置文件,并且Surefire只列在其中一个配置文件中。因此,当该配置文件不活动时,它实际上(有意思)意味着Maven加载任何它想要的内容。所以我将插件复制到其他配置文件中,现在它可以正常工作了。谢谢。 - Brazen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接