gradle 与 Java:在使用 gradle 与 Java 时何时创建 .m2 文件夹

spa*_*y15 2 java gradle maven

  1. 在这里,我了解到依赖项是从 Maven 存储库下载的。并想知道当我执行此操作时是否会创建 .m2 文件夹。或者在不创建 .m2 本地存储库的情况下这是否可以工作。我读到本地仓库只需要 Maven,而不是 Grade。因此,在使用 Gradle 访问 Maven 存储库来下载依赖项的情况下,需要 .m2 文件夹。
  2. 这个 .m2 文件夹什么时候创建的?
  3. Gradle 构建成功后,我确实检查了我的 {user home} 但没有创建 .m2
  4. 我确实尝试从谷歌获取信息,但没有得到任何澄清。对 Gradle 在构建项目时如何使用 .m2 感到困惑。
 apply plugin: 'eclipse'
 apply plugin: 'maven'
 apply plugin: 'idea'
 apply plugin: 'groovy'

 sourceCompatibility = JavaVersion.VERSION_1_8
 targetCompatibility = JavaVersion.VERSION_1_8

 //Artifactory Central Repository
 buildscript {
     repositories {
         maven {
             url 'abc'
             credentials {
                 username = ""
                 password = ""
             }
Run Code Online (Sandbox Code Playgroud)

Sla*_*law 6

Gradle 依赖缓存

Gradle 使用自己的依赖项缓存

Gradle 包含高度复杂的依赖项缓存机制,该机制旨在最大限度地减少依赖项解析中发出的远程请求的数量,同时努力保证依赖项解析的结果是正确且可重现的。

Gradle 依赖项缓存由两种存储类型组成,位于GRADLE_USER_HOME/caches

  • 基于文件的下载工件存储,包括 jar 等二进制文件以及 POM 文件和 Ivy 文件等原始下载元数据。下载工件的存储路径包含 SHA1 校验和,这意味着可以轻松缓存 2 个具有相同名称但内容不同的工件。
  • 已解析模块元数据的二进制存储,包括解析动态版本、模块描述符和工件的结果。

[...]

如此处所述GRADLE_USER_HOME其中:

Gradle 用户主目录($USER_HOME/.gradle默认情况下)用于存储全局配置属性和初始化脚本以及缓存和日志文件。[...]


本地 Maven 存储库

您可以配置 Gradle 来搜索本地 Maven 存储库

[...]

要将本地 Maven 缓存声明为存储库,请将其添加到您的构建脚本中:

示例 8. 添加本地 Maven 缓存作为存储库

repositories {
    mavenLocal() 
}
Run Code Online (Sandbox Code Playgroud)

Gradle 使用与 Maven 相同的逻辑来识别本地 Maven 缓存的位置。如果在 a 中定义了本地存储库位置settings.xml,则将使用该位置。in优先于settings.xmlin 。如果没有可用的位置,Gradle 将使用默认位置。USER_HOME/.m2settings.xmlM2_HOME/confsettings.xmlUSER_HOME/.m2/repository

但请注意,Gradle警告不要使用本地 Maven 存储库,除非您确实需要它。

如果需要,您可以使用maven-publish插件发布到本地 Maven 存储库:

为了与本地 Maven 安装集成,有时将模块及其 POM 文件和其他元数据发布到 Maven 本地存储库(通常位于$USER_HOME/.m2/repository )中很有用。用 Maven 的话说,这称为“安装”模块。

Maven Publish Plugin 通过自动为容器中的PublishToMavenLocal每个任务创建一个任务,使这一切变得容易。任务名称遵循 的模式。这些任务中的每一个都连接到聚合任务中。您不需要在您的部分中。MavenPublicationpublishing.publicationspublishubNamePublicationToMavenLocalpublishToMavenLocalmavenLocal()publishing.repositories