.gradle 文件夹的每个子文件夹的用途是什么?

What are each of the subfolders of the .gradle folder for?

我很惊讶我在任何地方都找不到这个,但无论如何,我想知道 .gradle 文件夹中每个文件夹的用途,以及删除它们的安全性,尤其是在便携性方面。

目录布局在其用户指南的 "The Directories and Files Gradle Uses" 章节中进行了描述。

├── caches                   // <1>
│   ├── 4.8                  // <2>
│   ├── 4.9                  // <2>
│   ├── ⋮
│   ├── jars-3               // <3>
│   └── modules-2            // <3>
├── daemon                   // <4>
│   ├── ⋮
│   ├── 4.8
│   └── 4.9
├── init.d                   // <5>
│   └── my-setup.gradle
├── wrapper
│   └── dists                // <6>
│       ├── ⋮
│       ├── gradle-4.8-bin
│       ├── gradle-4.9-all
│       └── gradle-4.9-bin
└── gradle.properties        // <7>
  1. 全局缓存目录(针对所有非项目特定的内容)
  2. 特定于版本的缓存(例如支持增量构建)
  3. 共享缓存(例如,用于依赖项的工件)
  4. Gradle Daemon
  5. 的注册表和日志
  6. 全球initialization scripts
  7. Gradle Wrapper
  8. 下载的发行版
  9. 全球Gradle configuration properties

从 4.10 版开始,Gradle 自动清理其用户主目录。当 Gradle 守护程序停止或关闭时,清理在后台运行。如果使用 --no-daemon,它会在构建会话后在前台运行,并带有可视进度指示器。

定期应用以下清理策略(最多每 24 小时一次):

  • 检查 caches/<gradle-version>/ 中特定于版本的缓存是否仍在使用中。如果不是,发布版本的目录在 30 天不活动后删除,快照版本在 7 天不活动后删除。
  • 检查 caches/(例如 jars-*)中的共享缓存是否仍在使用中。如果没有 Gradle 版本仍在使用它们,它们将被删除。
  • 检查 caches/ 中当前 Gradle 版本(例如 jars-3modules-2)使用的共享缓存中的文件上次访问时间。根据文件是可以在本地重新创建还是必须再次从远程存储库下载,它将分别在 7 天或 30 天未被访问后删除。
  • Gradle wrapper/dists/ 中的发行版被检查是否仍在使用,即是否有相应的特定于版本的缓存目录。未使用的分配被删除。

native 似乎包含 platform-specific dependencies (like .so, .dll) for libraries like Jansi: it needs them to provide rich console output (like colours in the output). The code for that features is not documented, but you can take a look here. Particularly library.jansi.path system property points~/.gradle/native/jansi/1.17.1/linux64(在我的机器上;您可以通过在自定义 Gradle 任务中打印 System.getProperties() 来检查) .

workers seems to be used as a working directory for the workers described in Workers API.

wrappers可以被IDE下载。基本上,如果您的目录非空,则意味着您实际上至少使用过一次包装器。