【问题标题】:Gradle downloading dependency into cache instead of maven repositoryGradle 将依赖项下载到缓存而不是 Maven 存储库
【发布时间】:2015-03-01 09:26:09
【问题描述】:

我正在尝试在我的文件系统上为 maven 和 gradle 维护相同的存储库。但是我遇到了一些问题。

我的build.gradle 文件中有以下内容。

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.3.9'
    runtime group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.3.9'
    runtime 'org.xerial:sqlite-jdbc:3.8.7'
}

GRADLE_HOME 是D:\Programming\Java\gradle-2.2.1
GRADLE_USER_HOME 是D:\Programming\Java\.m2

我的 gradle home 与我的 Maven 存储库相同。

但是当通过 gradle 下载依赖项时,它们将被下载到 GRADLE_USER_HOME\cache 而不是存储库文件夹中。我缺少什么配置?

编辑 我已经检查了Gradle In Action这本书的依赖管理章节。没有。我已经检查了 gradle 网站上的dependency management,但它也只是说使用了缓存。

似乎 gradle 中没有这样的选项。有人可以确认吗?

【问题讨论】:

    标签: java maven gradle dependency-management


    【解决方案1】:

    没有设置可以改变它。没有这样的 gradle 存储库。此外,由于混乱,让 gradle 使用存储库的文件夹作为依赖项缓存似乎是个坏主意。

    如果您尝试将 gradle 构建的工件发布到上述 maven 存储库,您可能应该看看 maven-publish 插件。

    如果您尝试在构建中使用该存储库中的工件,则可以将mavenLocal() 添加到您的存储库中,然后在您的依赖项中使用compile 函数。

    【讨论】:

    • 以上两件事我都知道。部分是如果我希望将工件放置在 maven 存储库中以便我可以在其他 gradle/maven 构建中重用?我目前的做法是首先通过 Maven 下载它,然后根据需要在 Maven/gradle 中使用它。
    • @AseemBansal 您想把它放在那里,这样当您执行使用相同(外部)工件的其他构建时就不必重新下载它?如果 gradle 在其缓存中已经有一个工件,它将尽可能地重用。
    • 是的,这正是我想要的。但是 Maven 不会使用那个工件。我需要 maven,因为 IntellijIdea 中对 gradle is broken 的支持我无法在任何地方开始使用 gradle。同样出于某些奇怪的原因,gradle 正在下载依赖项,并且如果本地存储库中不存在依赖项,则不会从缓存中重用它们。
    • 您可以编写一个自定义 gradle 任务来将缓存复制到 maven repo。至于 IDEA 的 gradle 集成被破坏,我只能说我不使用它。我更喜欢cli。
    • 另外,gradle 根本不是为了弄乱 maven 的文件而构建的。并行使用多个构建系统总是很麻烦。
    【解决方案2】:

    是的,我阅读了源代码并确认没有设置可以更改。

    这是我的解决方案:

    1. 安装本地 maven 存储库管理器,例如 Nexus。

    2. 使用该存储库配置 gradle。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 2011-12-16
      • 2020-07-20
      • 2015-11-13
      • 2016-12-22
      相关资源
      最近更新 更多