无法在 Maven 中强制使用较新版本的 Surefire-plugin

发布于 2024-10-18 02:30:16 字数 1711 浏览 6 评论 0原文

我有一个 Maven 项目,我正在使用 Surefire-plugin 来运行我的测试。 以前,我没有强制使用任何版本,maven 为我选择了 2.4.3(为什么??)。

我想改用 2.7.2,它对 JUnit4 有更好的支持(尤其是参数化测试)。

因此,我修改了根父 POM,如下所示:

    <pluginManagement>
             <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.7.2</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.7.2</version>
                </dependency>
            </dependencies>
                            <configuration>
                                 <skipTests>true</skipTests>
                            </configuration> 
        </plugin>
          </plugins>
    </pluginManagement>

但是,在子模块中,surefire:2.4.3 不断被调用。 这是 -X 调试跟踪:

[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-surefire-plugin:2.4.3:test'

而在父 pom 中,使用 2.7.2:

[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-surefire-plugin:2.7.2:test'

甚至 effective-pom 显示插件的“版本”(如果未在子模块中继承):

 <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.4.3</version>
    <configuration>
      <skipTests>true</skipTests>
    </configuration>
  </plugin>

任何帮助将不胜感激。

问候, 拉斐尔

I have a maven project and I am using the surefire-plugin to run my tests.
Previously, I didn't force any version and maven picked up the 2.4.3 for me (why ??).

I want to use 2.7.2 instead, which has better support for JUnit4 (especially Parametrized tests).

Hence, I have modified the root parent POM like this :

    <pluginManagement>
             <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.7.2</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.7.2</version>
                </dependency>
            </dependencies>
                            <configuration>
                                 <skipTests>true</skipTests>
                            </configuration> 
        </plugin>
          </plugins>
    </pluginManagement>

However, in the child modules, this is surefire:2.4.3 that keeps being called.
Here is the -X debug trace :

[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-surefire-plugin:2.4.3:test'

Whereas in the parent pom, 2.7.2 is used:

[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-surefire-plugin:2.7.2:test'

And even the effective-pom shows that the "version" of the plugin if not inherited in child modules:

 <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.4.3</version>
    <configuration>
      <skipTests>true</skipTests>
    </configuration>
  </plugin>

Any help would be much appreciated.

Regards,
Raphael

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文