java - 使用 Maven 存储库进行 Gradle 离线构建
问题描述
我正在尝试设置离线 Gradle 构建。
理想情况下,我希望将我的所有项目依赖项都放在一个任意的 Maven 存储库中,如下所示:
repositories {
maven {
url 'file://PATH/TO/REPO'
}
}
但是,在全新的 Gradle 安装(没有 ~/.gradle 缓存)中,上述操作失败,原因如下:
* What went wrong
Plugin [id: PLUGINID, version: PLUGINVERSION] was not found in any of the
following sources:
- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolvee plugin artifact 'PLUGINID:PLUGINNAME:PLUGINVERSION')
Searched in the following repositories:
Gradle Central Plugin Repository
我尝试了几种不同的方法来指定存储库,包括:
- 将“url ...”替换为“flatDir { dir '/PATH/TO/REPO' }”。
- 将所有依赖项复制到 ~/.m2 并调用 mavenLocal() 作为存储库。
要将依赖项从 ~/.gradle/caches/modules-2/files-2.1/ 复制到我的“离线”存储库中,我尝试过:
- 直接复制/粘贴
一个 Gradle 任务,它将结构转换为:
task cacheLocal(type: Copy) { from new File(gradle.gradleUserHomeDir, 'caches/modules-2/files-2.1') into '/PATH/TO/REPO' eachFile { List<String> parts = it.path.split('/') it.path = (parts[0] + '/' + parts[1]).replace('.','/') + '/' + parts[2] + '/' + parts[4] } includeEmptyDirs = false }
其他事情:
- 使用“--offline”运行没有区别。
- 如果 ~/.gradle 已经存在,则构建成功,否则失败。
我的插件块(上面的错误语句将命中第一个非 Gradle 核心插件,因此在这种情况下是 protobuf):
plugins {
id "com.google.protobuf" version "0.8.6"
id "nebula.ospackage" version "4.9.3"
id "java"
id "eclipse"
}
这超出了我的深度,任何帮助将不胜感激!
解决方案
如果您还希望从本地存储库中解析插件,则必须配置该pluginManagement
部分才能这样做。在您的问题中,您似乎只配置了项目存储库。
请参阅文档中的示例
推荐阅读
- apache-spark - 如何为尚不支持的编程语言实现 Spark UDF 类?
- file - 自己的 FormFile 模型
- javascript - 从 Google 表格中获取数据并使用它来计算成本
- python - Python networkx,如何为每个节点添加 x 数量的边?
- c - 如何限制/停止 fgets 读取的字符数?
- python - Polyglot for Python 安装在 Windows 上,但不会运行简单测试
- cordova - 如何在cordova应用程序的默认浏览器中打开生成的PDF blob?
- python - 为什么我的函数在 if 下没有返回打印语句
- python - 创建一个将脚本添加到路径的 Python 包
- python - 使用 smtplib 编辑 Python 电子邮件中的消息