Maven进程测试资源

时间:2011-11-03 16:06:09

标签: testing maven dependencies

我有一个maven项目,它对工件具有测试范围依赖性。 但由于某些原因,我正在运行此项目的新环境中无法使用该工件。因此,maven无法找到要复制的工件,因此process-test-resources步骤失败。

有没有人知道在找不到测试工件时防止maven构建失败的方法?或者可以修改步骤以排除此工件?我正在使用-DskipTests = true标志,所以在我看来这个测试范围依赖项工件应该无关紧要。

提前谢谢!

5 个答案:

答案 0 :(得分:1)

您可以修改pom以不再具有该测试范围依赖关系并删除任何需要它的东西或者只是找到工件..

答案 1 :(得分:0)

您可以尝试将选项更改为-Dmaven.test.skip=true,但文档未明确提及跳过测试资源管理:请参阅http://maven.apache.org/plugins/maven-surefire-plugin/examples/skipping-test.html

答案 2 :(得分:0)

如果您有可用的工件文件,则可以尝试将其手动安装到本地存储库中。

直接来自maven-install-plugin doc

mvn install:install-file  -Dfile=path-to-your-artifact-jar \
                          -DgroupId=your.groupId \
                          -DartifactId=your-artifactId \
                          -Dversion=version \
                          -Dpackaging=jar \
                          -DlocalRepositoryPath=path-to-specific-local-repo

我不建议将其作为一般解决方案,但在您解决环境问题之前,它会一直有效。

答案 3 :(得分:0)

假设测试必须成功才能使构建成功。你可以跳过测试,但让构建自动跳过测试只是因为它不能运行它们似乎很危险 - 至少这是理论,并解释为什么你尝试做的事情在maven中并不容易。

我从来没有这样做过,但您可以通过条件构建来解决问题,并且只有在依赖项可用时才激活测试生命周期:

    <profiles>
      <profile>
        <activation>
          <-- something relying on dependency presence/absence? -->
        </activation>
        <skipTests>true</skipTests>
      </profile>
    </profiles>

我找不到一种简单的方法来激活存在的依赖项,因此您可能必须使用基于文件的激活(ew ....) - 这反过来可能需要'假'项目首先尝试为你下载dep(在那里使dep可选)。

如果该上下文中的skipTests不起作用,并且您需要基于配置文件的构建,它甚至可能变得更复杂。

如果它变得丑陋,我要做的就是将项目拆分为两个(罐子/测试) - 这样扭曲的逻辑就不会“污染”主要项目 - 而且讨厌的东西(antrun是你的朋友! )在测试项目中并不像项目那样糟糕,最终不会产生其他人依赖的东西。

答案 4 :(得分:0)

使用 -Dmaven.test.skip = true 将为您提供所需的大部分内容。然后,它取决于您要处理测试资源的插件。

我发现其他一些插件也允许你跳过他们的动作,然后你可以重用maven.test.skip中的属性值

例如: http://mojo.codehaus.org/exec-maven-plugin/exec-mojo.html

这有一个跳过配置。 对该执行的配置进行以下更改将跳过该操作。

<configuration>
  ...
  <skip>${maven.test.skip}</skip> 
</configuration>

这个问题可能是2011年,但我希望下一个人会发现它很有用。

这对于像eclipse这样的开发环境非常有用,它在每次编译时都使用mvn来更新类。如果你可以跳过慢动作,你也可以获得加速。