android - 如何使用 gradle 对库进行依赖注入(inject)?

标签 android gradle

我们正在开发一个依赖于一些 Java 库的 Android 项目。出于测试目的,我们希望能够使用包含不同 jar 的 stub 变体。
如何用 gradle 做到这一点?

我一直在尝试一些有味道的东西,但现在只 build 了“味道”,而不是正常的 build ......

最佳答案

使用像 Google Guice 这样的轻量级 DI 容器可能比尝试使用构建系统执行此操作更好。

https://code.google.com/p/google-guice/

您可以定义一个测试模块和一个生产模块,将项目分别绑定(bind)到测试和生产类。

如果你真的想用 gradle 来做,我想不出一个很好的方法来做到这一点。一种方法是定义一个新配置(称为 testAndroid),并从中排除所有生产 jar,并用测试 jar 替换它们。然后你仍然可以使用java插件来构建它。您可以定义一个新的归档文件,该归档文件将在运行 uploadArchives 时发布测试 jar。这是一个突出的例子:

configurations{
    testAndroid extendsFrom compile
    testAndroid.exclude(group: 'my.company.production') 
}

dependencies{
    compile group: 'my.company.production', name: 'prod-jar', version: '1.0'
    testAndroid group: 'my.company.test', name: 'test-jar', version: '1.0'
}

task testJar(type: Jar){
    //build the jar
}

artifacts{
     archives testJar
}

关于android - 如何使用 gradle 对库进行依赖注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15497843/

相关文章:

java - void函数中的return语句有什么用

java - 更改字符串后获取 "FATAL EXCEPTION: main"

android - 折线图中不同绘图点的颜色不同

android - 如何写入保存在Android本地文件夹中的文件

android - Gradle 构建不正确 - "Could not find method v2SigningEnabled for arguments [false]"

android - Android Gradle 插件如何处理库中的冲突资源?

php - 从mysql/php获取数据出错

android - 建筑时的gradle版本APK

gradle - 在gradle的javadoc jar中包含META-INF资源

groovy - gradle获取相对资源路径