提问者:小点点

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


嗨,我想在一个gradle项目上用cucumber做几个测试,我试图在另一台PC上运行这个测试(网络访问受限),所以我复制/粘贴了< code >下的所有内容。/gradle/caches和项目文件,如< code>build、src和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个答案

匿名用户

请参阅此未结的 Gradle 问题

Gradle 缓存目前还不完全可移植。如果 .gradle 文件夹的绝对路径在两台计算机上完全相同,则它确实有效。如果两台计算机上的用户名不同,则 ~/.gradle 的绝对路径不相同!

有几种方法可以解决这个问题,按照所需的努力顺序,从最小到最大:

如果这在网络受限的计算机上是可行的,请在不带脱机标志的情况下运行一次,依赖项将不会再次下载,但校验和是-更重要的是,缓存现在已验证,并适合与<code>脱机</code>标志一起使用。

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

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

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

(也可以导出为 maven 格式存储库,而不是 flatdir。见 https://stackoverflow.com/a/13396776/1174024)

根据我的经验,Maven的.m2文件夹更便于携带。创建一个具有相同依赖项的maven项目,将依赖项缓存到.m2中,然后将.m2复制到第二台机器上。在第二台机器上,添加<code>mavenLocal()</code>作为一个repo。