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

Rod*_*ano 4 java cucumber gradle

嗨,我想在一个 gradle 项目上运行一些用黄瓜做的测试,我试图在另一台 PC 上运行这个测试(网络访问受限)所以我复制/粘贴了下面的所有内容,~./gradle/caches项目文件喜欢build, src and build.gradle并放置了所有内容和原来一样的地方

所以一旦我把所有东西都准备好,我就运行了这个

  gradle --no-daemon --offline cucumber
Run Code Online (Sandbox Code Playgroud)

我失败了

> 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
Run Code Online (Sandbox Code Playgroud)

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

~/.gradle/caches/modules-2/files-2.1/com.github.samueltbrown/gradle-cucumber-plugin/0.9/7b65c67654715025eed1924
0c4f7defbef9645e0# ls
gradle-cucumber-plugin-0.9.jar
Run Code Online (Sandbox Code Playgroud)

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

plugins {
  id "com.github.samueltbrown.cucumber" version "0.9"
}
Run Code Online (Sandbox Code Playgroud)

谢谢

RaG*_*aGe 5

看到这个开放的Gradle 问题

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

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

1. 不跑--offline 一次

如果这在您的网络受限机器上是可能的,在没有离线标志的情况下运行一次,将不会再次下载依赖项,但校验和 - 更重要的是,缓存现在已经过验证并适合与--offline标志一起使用。

2. 移动.gradle到可重复的路径

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

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

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

repositories {
  flatDir {
    dirs 'lib' //folder containing dependencies
  }
}
Run Code Online (Sandbox Code Playgroud)

(您也可以导出到 maven 格式的 repo 而不是 flatdir。请参阅/sf/answers/937774351/

4.改用maven缓存

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