当前位置: 首页 > 面试题库 >

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

宋飞舟
2023-03-14
问题内容

嗨,我想在gradle项目上运行用Cucumber做的一些测试,我试图在另一台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"
}

谢谢


问题答案:

看到这个公开的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
  }
}

您也可以导出到Maven格式的仓库而不是flatdir。

4.改用Maven缓存

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



 类似资料:
  • 嗨,我想在一个gradle项目上用cucumber做几个测试,我试图在另一台PC上运行这个测试(网络访问受限),所以我复制/粘贴了< code >下的所有内容。/gradle/caches和项目文件,如< code>build、src和build.gradle,并将所有内容放在与原始文件相同的位置 所以一旦我把一切都准备好了,我就运行这个 我失败了 奇怪的是我有缓存目录上的文件 仅供参考,我没有像

  • 设置.分级 Build.Gradle 编辑:要复制,只需克隆repo https://github.com/kic/stackoverflow/tree/master/gradleproblem并在bar目录中尝试

  • 到 。 让我惊讶的是,通过创建的fat jar不再包含下所需的lib了吗?如果我将“实现”替换为“编译”,它就会像预期的那样工作。 有什么东西需要配置以便spring-boot-plugin添加它们吗?还是需要提前将项目升级到spring Boot2?

  • 我正在更新一大组遗留java应用程序。当前构建使用ant,其依赖项来自每个项目的lib目录。依赖项是每个项目的一部分,并签入源代码管理。更新的目的是将构建转换为gradle,并使用maven存储库进行依赖关系管理。为了简单起见,遗留构建使用ant构造从其他项目的lib目录复制依赖项,如下所示: 这种方法用于编译和运行时依赖项。虽然这样做有效,但由于包含了许多在运行时不需要的JAR,因此会导致部署工

  • 我是新手。使用Gradle3.5,我试图从java项目创建一个war构建。下面是我的分级文件内容。 当我生成war构建时,它会在目录下添加jar文件。但是,除了这些jar文件之外,我还需要组中的jar文件和任务中生成的jar文件。我怎样才能做到这一点呢?

  • 我正在使用Gradle插件0.9和Android Studio 0.5.4。 我有一个Android库项目,只有一个依赖项。jar位于/libs文件夹中。当我在Proguard激活的情况下运行AssemblerRelease任务时,生成的AAR具有以下结构: 我的图书馆 问题是myJar。jar类被合并到类中。jar by Proguard(当我在没有Proguard的情况下运行时,它不会发生)。