使用的gradle科尔多瓦包装
我使用的是Android的科尔多瓦4.0.0它使用gradle这个包装打造时指定不同的储存库。我需要指定与mavenCentral不同的存储库。我不能简单地修改build.gradle文件,因为它是由Cordova自动生成的。因为它使用的是Cordova指定的包装分发,所以我不能在分发中添加/init.d。我试着加入USER_HOME/.gradle/init.gradle文件,它似乎并没有被习惯。有没有其他的方式来指定一个初始化文件,当使用我没有控制权的包装?使用的gradle科尔多瓦包装
编辑: 作为一种解决方法,现在我添加了一个after_prepare挂钩,它将build.gradle文件中任何位置的文本“mavenCentral()”更改为我需要使用的存储库。我们有了一个更好的基于的Gradle虽然解决方案...
回答:
我们使用的离子和有我们的,我们用的不是自己的mavenCentral承上启下库。我们结束了创建一个钩加入了钩来解决这个open issue
:
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;
}
回答:
您指定的gradle这个初始化脚本https://docs.gradle.org/current/userguide/init_scripts.html
像这种额外的Maven的回购协议:
allprojects { repositories { maven { credentials { username 'your_user_name' password 'your_password' } url "https://your_repo" } maven { url "http://download.01.org/crosswalk/releases/crosswalk/android/maven2/" } } }
回答:
这可以工作进行的方式似乎随着时间而改变。 Cordova/Phonegap的表现让我很困难。然而,这目前对我的作品:
- 创建
build.gradle
文件或复制一个从新制作的Android Studio项目 - 你知道,它喜欢在默认情况下把jcenter()
那里。下面的例子。 - 它在类型gradleReference添加到您的
plugin.xml
文件作为定制的“框架”,在你的Android平台的标签。下面的例子。 - ,而我在它 - 如果你需要其他gradle这个更改,例如Java语言水平,你可以包括
build-extras.gradle
文件以及来调整其他设置(不知道这些都需要单独的诚实,但我已经到了我的皮带的尽头,试图处理这件事情)。下面的例子。是的,目标目录必须是src/..
。
样品build.gradle
文件:
buildscript { repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
dependencies {
compile 'net.example:some-sdk:2.3.1'
}
样品plugin.xml
:
<?xml version="1.0" encoding="UTF-8"?> <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" id="io.proxsee" version="0.1.0">
<!-- When you update this file, update the package.json too. -->
<!-- Reference: https://cordova.apache.org/docs/en/latest/plugin_ref/spec.html -->
<!-- .. other stuff .. -->
<platform name="android">
<!-- .. other stuff .. -->
<framework src="build.gradle" custom="true" type="gradleReference" />
<source-file src="build-extras.gradle" target-dir="src/.." />
</platform>
</plugin>
样品build-extras.gradle
:
ext.postBuildExtras = { android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
packagingOptions {
exclude 'META-INF/ASL2.0'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'META-INF/maven/com.squareup/javawriter/pom.xml'
exclude 'META-INF/maven/com.squareup/javawriter/pom.properties'
}
}
}
以上是 使用的gradle科尔多瓦包装 的全部内容, 来源链接: utcz.com/qa/257220.html