【问题标题】:Gradle: project depends on libraries but is not a library itselfGradle:项目依赖于库,但本身不是库
【发布时间】:2014-10-27 01:41:56
【问题描述】:

我有包含 3 个项目的 android 解决方案:

  • 应用。表示层,包含 UI 的逻辑。安卓应用项目;
  • 。商业逻辑。 Java库项目;
  • 数据。数据存储。安卓库项目;

应用依赖于域。领域取决于数据。

这是 app 项目的 build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.0.1"

    defaultConfig {
        applicationId "com.company.name"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }

    signingConfigs {
        debug {
            ...
        }
    }

    buildTypes {
        ...
    }
}

dependencies {
    compile project(':domain')
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.github.asne.facebook:facebook:3.17.2'
    compile 'com.google.android.gms:play-services:6.1.11'
    compile 'com.android.support:appcompat-v7:21.0.0'
}
项目的

build.gradle:

apply plugin: 'java'


dependencies {
    compile project(':data')
}
data 项目的

build.gradle:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.0.1"

    defaultConfig {
        applicationId "com.company.name"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        ...
    }
}

dependencies {
    compile 'org.simpleframework:simple-xml:2.7.1'
}

问题是我收到了一个错误,并且该错误的消息是 domaindepends on libraries but is not a library itself。那里有什么问题?

【问题讨论】:

    标签: java android gradle android-gradle-plugin build.gradle


    【解决方案1】:

    我的建议是消除域对数据的依赖。相反,将数据提供者注入域。有一个很好的 article 提供了一个线索,说明不同的应用程序部分应该如何关联以使单元测试变得轻松。

    另一种方法是按照@frederick nyawaya 的回答并使用this tutorial 使用Robolectric 设置单元测试。

    【讨论】:

      【解决方案2】:

      domain 的 build.gradle 中,添加:apply plugin: 'com.android.library'

      【讨论】:

      • 那么domain就不能用纯java了吗?这样我们就可以使用junit 4了,我们可以很容易地测试它。
      • 普通的 Java 项目不能依赖于 Android 项目。 Android 项目比较复杂,Java 插件不知道怎么处理。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-30
      相关资源
      最近更新 更多