Maven:跳过测试,但仍然无法确定

时间:2012-03-03 16:36:42

标签: maven surefire

我不知道这是一个问题或建议。但我会问这个问题可能是因为我做错了。

我的问题是我想在maven构建中跳过测试,在eclipse插件中,我在运行maven时检查了配置中的Skip Test选项。它仍然在Test surefire插件上失败,因为它无法下载2.4.3版本(尽管我之前的maven项目使用了2.7.2并且它已经存在于我的仓库中)所以我尝试了跳过测试但它仍然失败。

我将我的POM配置为使用我已经拥有的2.7万插件,它只是说跳过测试。现在,我的困惑是,当它已经开始跳过测试部分时,为什么还要进入下载并确认是否存在确定的插件。只是跳过它我说..

嗯,这是maven的正常行为,当你跳过某些东西时,插件仍然被下载,就好像你要使用它一样。或者我错误地做了下载它。

可能是因为有一些名为“Effective POM”的新内容,它在插件管理区域中包含了surefire插件2.4.2的列表,当我使用m2eclipse在eclipse中导入我的maven项目时我无法编辑有效的POM 。在制作maven项目时,我之前没有在NetBeans中看到过这个。

为了工作,我在我的构建配置文件中添加了一个不必要的surefire插件条目,并在那里跳过了测试,并添加了我在我的repo中的版本。我只这样做,以便我的项目也可以在eclipse下构建。另外,我的项目在NetBeans和简单的命令行中运行没有任何问题。

任何评论!!

我认为maven应该能够首先看到SKIP部分,然后继续使用插件。

赛..

3 个答案:

答案 0 :(得分:0)

根据您提到的内容,您不了解使用插件和配置插件之间的区别。在这种情况下,您正在使用插件(它位于您的构建区域中,或者您已经通过超级pom发现)。此外,尽管maven-surefire-plugin in version 2.7.3不存在,但您仍试图跳过测试。

配置参数skip不会执行测试,也不会编译它们。如果你不想在有限的时间内忽略测试,你可以使用“skipTest”参数,这与跳过相反将继续编译测试。

我建议您使用项目的pluginManagement部分或父pom来定义maven-surefire-plugin的版本(同时存在于2.12版本中)......

以下代码片段将pluginManagement部分添加到pom中,该pom控制将使用哪个版本的maven-surefire插件。

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.11</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
    ..
  </build>

将其插入项目pom之后,输出有效pom应该为您提供版本...否则您可能需要先更新项目配置。

答案 1 :(得分:0)

编译和运行测试是maven默认lifecycle的一部分。由于maven使用surefire进行运行测试,因此需要下载surefire。 skipTests不是maven配置,而是一个surefire插件配置。该插件确定maven需要skip tests

至于surefire插件的2.4.3,它是valid version,但可以与2.0.6版本的maven一起使用。很可能你使用的是较新的maven,但由于某种原因,你的系统上有super pom旧的maven版本。

答案 2 :(得分:0)

skipTest不告诉maven跳过测试生命周期,它告诉surefire插件不要运行它们。该插件仍然是生命周期的一部分(它在被调用时什么都不做)。因此你的错误。

如果你想要完全不确定,你需要定义自己的包装(因为surefire是标准jar包装生命周期的一部分) - 除了选择适合你的surefire版本之外,还有很多工作要做(在你的部分添加一个右边的部分)。