Gradle 将依赖项下载到缓存而不是 Maven 存储库
Posted
技术标签:
【中文标题】Gradle 将依赖项下载到缓存而不是 Maven 存储库【英文标题】:Gradle downloading dependency into cache instead of maven repository 【发布时间】: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 中没有这样的选项。有人可以确认吗?
【问题讨论】:
【参考方案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】:是的,我阅读了源代码并确认没有设置可以更改。
这是我的解决方案:
安装本地 maven 存储库管理器,例如 Nexus。
使用该存储库配置 gradle。
【讨论】:
以上是关于Gradle 将依赖项下载到缓存而不是 Maven 存储库的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Gradle 中的本地 JUnit Jar 而不是 Maven Central?