0

我不知道这是一个问题还是建议。但我要问它作为一个问题,因为可能是我做错了什么。

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

我将我的 POM 配置为使用我已经拥有的 surefire 2.7.3 插件,它只是说跳过测试。现在,我的困惑是,当它已经要跳过测试部分时,为什么还要费心去下载并确认用于surefire的插件是否存在。跳过它我说..

好吧,这是 maven 的正常行为,当您跳过某些内容时,插件仍然会被下载,就好像您要使用它一样。还是我做错了让它下载它。

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

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

任何意见!!

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

赛德..

4

3 回答 3

0

编译和运行测试是maven默认生命周期的一部分。由于maven使用surefire进行运行测试,所以需要下载surefire。skipTests不是 Maven 配置,而是一个万无一失的插件配置。该插件确定 maven 需要skip tests.

至于 2.4.3 的 surefire 插件,它是一个有效版本,但适用于2.0.6maven 版本。很可能您使用的是较新的 maven,但由于某种原因super pom,您的系统上有较旧的 maven 版本。

于 2012-03-04T18:04:28.513 回答
0

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

如果您根本不想使用surefire,则需要定义自己的包装(因为surefire是标准jar包装生命周期的一部分)——这比选择适合您的surefire版本要多得多(添加一个部分与您的部分中的权利)。

于 2012-03-05T04:04:19.763 回答
0

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

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

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

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

  <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 应该为您提供版本...否则您可能需要先更新项目配置。

于 2012-03-03T16:46:32.913 回答