Gradle 管理的目录

Gradle 管理的目录

多个版本的 Gradle 共享一个 Gradle 用户主页

在多个版本的 Gradle 之间共享一个 Gradle 用户主页是很常见的。

如上所述,Gradle User Home 中的缓存是特定于版本的。不同版本的 Gradle 将仅对与每个版本关联的特定于版本的缓存执行维护。

另一方面,一些缓存在版本之间共享(例如,依赖性工件缓存或工件变换缓存)。

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

这意味着:

如果未自定义保留期,则所有执行清理的版本将具有相同的保留期。多个版本共享一个 Gradle User Home 不会有任何影响。

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

了解这些设置的 Gradle 版本将比之前固定的保留期更早地清理工件,而旧版本实际上不会参与共享缓存的清理。

如果为大于或等于版本 8.0 的 Gradle 版本自定义保留期以使用比之前固定期限更长的保留期,则旧版本的 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) }

}

}

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

beforeSettings { settings ->

settings.caches {

releasedWrappers.removeUnusedEntriesAfterDays = 45

snapshotWrappers.removeUnusedEntriesAfterDays = 10

downloadedResources.removeUnusedEntriesAfterDays = 45

createdResources.removeUnusedEntriesAfterDays = 10

}

}

相关推荐

MPLS技术与骨干网规划:理论与实践深度解析
365卫士杀毒清理大师

MPLS技术与骨干网规划:理论与实践深度解析

📅 09-23 👁️ 2743
打豆浆,豆子泡好直接打是外行,要多做这一步
365bet官网备用网站

打豆浆,豆子泡好直接打是外行,要多做这一步

📅 07-17 👁️ 819