gpt4 book ai didi

groovy - 如何加快 Gradle 依赖项解析或总体上提高性能?

转载 作者:行者123 更新时间:2023-12-01 15:24:10 25 4
gpt4 key购买 nike

我正在从 Maven 转换一个非常大的构建。有许多 BOM 已转换为依赖项列表。我也在使用 Spring Dependency 管理插件。

问题是依赖管理需要永远。请注意,即使我使用 --offline 似乎也需要很长时间.我也刚刚阅读了使用 allprojects {} 的内容和 subprojects{}导致并行失败。不过,显然我需要提供类似功能的东西。此迁移的首要目标是提高性能,但我认为到目前为止还没有更好。我需要知道:

如何在配置阶段设置我的依赖项列表,只设置一次并设置范围以便所有项目都可以使用该信息?是否有执行此操作的插件示例?当然,它必须与并行性一起工作。

我需要对 Spring 依赖管理插件做些什么来提高性能?

现在,构建时间大约为 25 分钟(离线运行),而且我使用的是中途的 8 核机器。那是守护进程在运行,没有单元或集成测试。 :-/

最佳答案

如果不了解更多有关您的环境或设置的信息,就很难说。但一些一般规则:

  • 您确定问题是依赖项解析吗,请使用 --profile 获取更多信息。 ( see docs )
  • 确保你只有一个仓库可以查看,最好离你很近,而且速度很快。我们通常在我们的 Nexus 中设置一个代理,这样我们就让 Nexus 为整个部门缓存。对于每个新存储库,Gradle 也会查找那里的所有版本。
  • 确保您的 Gradle 缓存速度快(想想本地 SSD 还是 NFS 挂载的旧磁盘)。否则将您的 $GRADLE_USER_HOME 移动到另一个本地位置。
  • 添加 DependencyResolutionListener 可能会为您提供有关瓶颈的更多信息。

  • 尝试将以下内容添加到 build.gradle 的开头:
    gradle.addListener(new DependencyResolutionListener() {
    ThreadLocal<Long> start = new ThreadLocal<>()
    @Override
    void beforeResolve(ResolvableDependencies dependencies) {
    start.set(System.nanoTime())
    }

    @Override
    void afterResolve(ResolvableDependencies dependencies) {
    long stop = System.nanoTime() - start.get()
    println "resolving $dependencies.resolutionResult.root.moduleVersion of configuration $dependencies.name (${stop/1000000} ms)"
    }
    })

    关于groovy - 如何加快 Gradle 依赖项解析或总体上提高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35182781/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com