编程语言
首页 > 编程语言> > java-在gradle上使用缓存的依赖项和插件运行黄瓜测试

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

作者:互联网

嗨,我想在gradle项目上运行用黄瓜做的一些测试,我试图在另一台PC上运行此测试(网络访问受限),所以我复制/粘贴了〜./ gradle / caches和项目下的所有内容像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"
}

谢谢

解决方法:

看到这个开放的Gradle issue

Gradle缓存目前尚不完全可移植.如果两台计算机上.gradle文件夹的绝对路径完全相同,则它确实可以工作.如果两台计算机上的用户名不同,则〜/ .gradle的绝对路径不相同!

有几种方法可以解决此问题,按照所需的工作顺序,至少对大多数而言:

1.一次不使用–offline运行

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

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

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

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

在网络连接的计算机上,使用gradle任务将所有依赖项导出到文件系统文件夹.将文件夹复制到另一台计算机上,然后在第二台计算机上使用Flatdir存储库.

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

(您也可以导出到Maven格式的存储库而不是flatdir.请参见https://stackoverflow.com/a/13396776/1174024)

4.改用Maven缓存

以我的经验,Maven的.m2文件夹更具可移植性.创建一个具有相同依赖项的maven项目,将依赖项缓存到.m2中,然后将.m2复制到第二台计算机上.在第二台机器上,添加mavenLocal()作为存储库.

标签:gradle,cucumber,java
来源: https://codeday.me/bug/20191027/1944433.html