Gradle 管理的目录

多个 Gradle 版本共享一个 Gradle 用户主目录

多个 Gradle 版本共享一个 Gradle 用户主目录是很常见的。

如上所述,Gradle 用户主目录中的缓存是版本特定的。不同版本的 Gradle 将只对其各自版本相关的版本特定缓存执行维护。

另一方面,有些缓存是版本之间共享的(例如,依赖项 artifact 缓存或 artifact 转换缓存)。

从 Gradle 8.0 版本开始,缓存清理设置可以配置为自定义保留期限。但是,旧版本有固定的保留期限(7 或 30 天,取决于缓存)。这些共享缓存可以被具有不同设置的 Gradle 版本访问以保留缓存 artifact。

这意味着

如果保留期限未自定义,则所有执行清理的版本将具有相同的保留期限。由于与多个版本共享 Gradle 用户主目录,因此不会产生任何影响。

如果将 Gradle 版本大于或等于 8.0 的保留期限自定义为使用比以前固定期限更短的保留期限,则也不会产生任何影响。

了解这些设置的 Gradle 版本将比以前固定的保留期限更早地清理 artifact,而旧版本将有效地不参与共享缓存的清理。

如果将 Gradle 版本大于或等于 8.0 的保留期限自定义为使用比以前固定期限更长的保留期限,则旧版本的 Gradle 可能会比配置的更早地清理共享缓存。

在这种情况下,如果希望为新版本保留这些共享缓存条目更长时间,它们将无法与旧版本共享 Gradle 用户主目录。它们将需要使用单独的目录。

与 8.0 版本之前的 Gradle 版本共享 Gradle 用户主目录时需要考虑的另一个问题是,用于配置缓存保留设置的 DSL 元素在早期版本中不可用,因此必须在版本之间共享的任何初始化脚本中考虑这一点。这可以通过有条件地应用符合版本的脚本轻松处理。

符合版本的脚本应位于 init.d 目录之外的其他位置(例如子目录),这样它就不会自动应用。

以版本安全的方式配置缓存清理

gradleUserHome/init.d/cache-settings.gradle.kts

if (GradleVersion.current() >= GradleVersion.version("8.0")) {

apply(from = "gradle8/cache-settings.gradle.kts")

}

gradleUserHome/init.d/cache-settings.gradle

if (GradleVersion.current() >= GradleVersion.version('8.0')) {

apply from: "gradle8/cache-settings.gradle"

}

符合版本的缓存配置脚本

gradleUserHome/init.d/gradle8/cache-settings.gradle.kts

beforeSettings {

caches {

releasedWrappers { setRemoveUnusedEntriesAfterDays(45) }

snapshotWrappers { setRemoveUnusedEntriesAfterDays(10) }

downloadedResources { setRemoveUnusedEntriesAfterDays(45) }

createdResources { setRemoveUnusedEntriesAfterDays(10) }

buildCache { setRemoveUnusedEntriesAfterDays(5) }

}

}

gradleUserHome/init.d/gradle8/cache-settings.gradle

beforeSettings { settings ->

settings.caches {

releasedWrappers.removeUnusedEntriesAfterDays = 45

snapshotWrappers.removeUnusedEntriesAfterDays = 10

downloadedResources.removeUnusedEntriesAfterDays = 45

createdResources.removeUnusedEntriesAfterDays = 10

buildCache.removeUnusedEntriesAfterDays = 5

}

}

热转印价格
织梦网站迁移后如何修改数据库配置文件
Copyright © 2022 2018世界杯时间_世界杯百大球星 - gonhee.com All Rights Reserved.