使用缓存的依赖项和gradle上的插件运行黄瓜测试

时间:2016-01-23 19:49:33

标签: java gradle cucumber

您好我想在gradle项目上运行一些用黄瓜做的测试,我试图在另一台PC(有限的网络访问)上运行此测试,所以我复制/粘贴了~./gradle/caches下的所有内容项目文件如build, src and build.gradle,并将所有内容放在与原始文件相同的位置

所以,一旦我掌握了一切,我就跑了

  gradle --no-daemon --offline cucumber

我失败了

> Could not resolve all dependencies for configuration ':classpath'.
   > Could not download gradle-cucumber-plugin.jar (com.github.samueltbrown:gradle-cucumber-plugin:0.9): No cached version available for offline mode

奇怪的是我在缓存目录中有文件

~/.gradle/caches/modules-2/files-2.1/com.github.samueltbrown/gradle-cucumber-plugin/0.9/7b65c67654715025eed1924
0c4f7defbef9645e0# ls
gradle-cucumber-plugin-0.9.jar

仅供参考,我没有像我想的那样使用gradle / java的经验,所以任何建议都会很棒,这就是build.gradle上“必需”的插件

plugins {
  id "com.github.samueltbrown.cucumber" version "0.9"
}

由于

1 个答案:

答案 0 :(得分:4)

请参见此开放Gradle issue

Gradle缓存当前不是完全可移植的。如果.gradle文件夹的绝对路径在两台机器上完全相同,它确实有效。如果两台机器上的用户名不同,~/.gradle的绝对路径就不一样了!

有几种方法可以解决这个问题,按照需要的努力,最少到大多数:

1。在没有--offline 的情况下运行

如果在您的网络受限计算机上可以执行此操作,则在没有脱机标记的情况下运行一次,将不会再次下载依赖项,但是校验和是 - 更重要的是,缓存现在已经过验证并且适合与--offline一起使用标志。

2。将.gradle移至可重复路径

通过在两台计算机上设置/tmp/.gradle,然后在计算机之间复制gradle缓存,将gradle缓存文件夹移动到GRADLE_USER_HOME之类的内容。

3。将所有依赖项导出到本地文件夹

在网络连接的计算机上,使用gradle任务将所有依赖项导出到文件系统文件夹。将文件夹复制到另一台计算机,并在第二台计算机上使用flatdir repo。

repositories {
  flatDir {
    dirs 'lib' //folder containing dependencies
  }
}

(您也可以导出为maven格式的repo而不是flatdir。请参阅https://stackoverflow.com/a/13396776/1174024

4。请改用maven缓存

根据我的经验,Maven的.m2文件夹更加便携。创建具有相同依赖关系的maven项目,将依赖关系缓存到.m2,然后将.m2复制到第二台计算机。在第二台机器上添加mavenLocal()作为回购。