android - 使用 Cordova gradle wrapper 时指定不同的存储库

标签 android cordova gradle gradlew

我正在使用 Cordova Android 4.0.0,它使用 gradle 包装器来构建。我需要指定与 mavenCentral 不同的存储库。我不能简单地修改 build.gradle 文件,因为它是由 Cordova 自动生成的。因为它使用的是 Cordova 指定的包装器分布,所以我无法将/init.d 添加到分布中。我试过添加一个 USER_HOME/.gradle/init.gradle 文件,它似乎没有被使用。使用我无法控制的包装器时,还有其他方法可以指定初始化文件吗?

编辑: 作为目前的解决方法,我添加了一个 after_prepare Hook ,该 Hook 将在 build.gradle 文件中的任何位置找到的文本“mavenCentral()”更改为我需要使用的存储库。不过,必须有一个更好的基于 gradle 的解决方案......

最佳答案

我们使用 ionic 并拥有我们自己的 nexus 存储库,我们使用它来代替 mavenCentral。我们最终创建了一个钩子(Hook)来解决这个 open issue

通过添加一个钩子(Hook):

module.exports = function(ctx) {
    'use strict';
    var fs = ctx.requireCordovaModule('fs'),
        path = ctx.requireCordovaModule('path'),
        deferral = ctx.requireCordovaModule('q').defer(),
        replaceStream = require('replacestream'),
        async = require('async');
    var platformRoot = path.join(ctx.opts.projectRoot, 'platforms/android');
    var gradleFiles = [path.join(platformRoot, 'build.gradle'), path.join(platformRoot, 'CordovaLib', 'build.gradle')];
    async.each(gradleFiles, function(f, cb) {
        fs.readFile(f, 'utf8', function(err, data) {
            if (err) {
                cb(err);
                return;
            }
            var result = data.replace(/mavenCentral\(\)/g, 'maven{url "http://nexus.corp.aal.au/content/groups/public-ad"}');
            fs.writeFile(f, result, 'utf8', cb);
        });
    }, function(err) {
        if (err) {
            deferral.reject();
        } else {
            deferral.resolve();
        }

    });
    return deferral.promise;
}

关于android - 使用 Cordova gradle wrapper 时指定不同的存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30062984/

相关文章:

java - 尽管方法在 .class 文件中,但在运行类时获取 NoSuchMethodException

java - android-Altbeacons 路径错误

android - 在 inappbrowser Phonegap webview 应用程序顶部显示自定义导航

android - No IDEA annotations attached to the JDK 1.8 (C :\…), 有些问题会找不到

IOs/phonegap - 无法提交到 itune - 无效的段对齐

android - Angular2 + Cordova - 启动时无法匹配任何路由

android - 具有不同风格的 Android 应用程序的客户端 ID

android - Android WebView 中的自定义视频播放器

android - 保护数据库文件不被任何其他用户访问

android - 我怎样才能让人们真正轻松地测试我的应用程序?