预热maven依赖缓存

时间:2013-04-10 08:33:34

标签: maven caching testing maven-surefire-plugin

如何预热我的maven测试的依赖缓存?例如。 mvn test -DskipTests下载了一些依赖项,但不是全部,例如某些maven surefire插件依赖项仅由mvn test下载。

我想创建我的文件系统的快照,以提高我的测试执行。因此,我希望下载所有依赖项,但我希望在不执行测试的情况下实现此目的。

仅在mvn test而非mvn test -DskipTests期间下载的部分依赖项:

Downloading: http://repo1.maven.org/maven2/org/apache/maven/surefire/surefire-junit47/2.14/surefire-junit47-2.14.pom
Downloaded: http://repo1.maven.org/maven2/org/apache/maven/surefire/surefire-    junit47/2.14/surefire-junit47-2.14.pom (4 KB at 13.9 KB/sec)
Downloading: http://repo1.maven.org/maven2/org/apache/maven/surefire/surefire-providers/2.14/surefire-providers-2.14.pom
Downloaded: http://repo1.maven.org/maven2/org/apache/maven/surefire/surefire-

3 个答案:

答案 0 :(得分:7)

根据需要解决依赖关系:

  • 当您开始构建时,下载应用程序代码的编译时间作为第一步。

  • 之后在相应阶段下载所需的所有插件。这还包括他们的传递依赖。

  • 在编译和执行测试时,将下载测试的依赖项。这些是与<scope>test</scope>的依赖关系。

因此,在您处于test阶段时,您必须拥有最新的依赖项,除非您已在本地缓存并安装它们并且您处于脱机模式。

resolve all your dependencies,你可以这样做:

mvn dependency:go-offline

resolve all the plugins,你可以这样做:

mvn dependency:resolve-plugins

答案 1 :(得分:2)

maven surefire插件仅为mvn测试下载,因为此插件的默认目标执行阶段是测试。

我想如果你想执行surefire插件,你可以指定目标执行阶段。

答案 2 :(得分:0)

我们采用以下方法在Jenkins奴隶上填充Maven缓存:

  • 进行完整构建
  • 压缩~/.m2文件夹(其中包含缓存的实例)
  • 将其放置并解压缩到要运行“预热”测试的计算机上
  • 自动执行上述步骤,以使其保持最新状态。