使用Maven存储库进行Gradle离线构建

时间:2018-08-01 22:35:30

标签: java android maven gradle groovy

我正在尝试设置离线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 

我尝试了几种不同的方法来指定存储库,包括:

  1. 用“ flatDir {dir'/ PATH / TO / REPO'}”替换“ url ...”。
  2. 将所有依赖项复制到〜/ .m2并调用mavenLocal()作为存储库。

要将依赖项从〜/ .gradle / caches / modules-2 / files-2.1 /复制到我的“离线”存储库中,我尝试过:

  1. 直接复制/粘贴
  2. 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"
}

这超出了我的理解范围,任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

如果您还希望从本地存储库解析插件,则必须配置pluginManagement部分。 在您的问题中,您似乎只配置了项目存储库。

请参见example in the documentation