Java Gradle:项目依赖于库,但不是库本身

Java Gradle:项目依赖于库,但不是库本身,java,android,gradle,android-gradle-plugin,build.gradle,Java,Android,Gradle,Android Gradle Plugin,Build.gradle,我的android解决方案包含3个项目: 应用程序。表示层,其中包含UI的逻辑。安卓应用项目 域。业务逻辑。Java图书馆项目 数据。数据存储。安卓图书馆项目 应用程序依赖于域。域依赖于数据 以下是应用程序项目的build.gradle: apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.0.1" defaultConfig {

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

  • 应用程序。表示层,其中包含UI的逻辑。安卓应用项目
  • 。业务逻辑。Java图书馆项目
  • 数据。数据存储。安卓图书馆项目
应用程序依赖于域。域依赖于数据

以下是应用程序项目的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'
}
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'
}
域的build.gradle项目:

apply plugin: 'java'


dependencies {
    compile project(':data')
}
数据的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'
}
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'
}

问题是我得到了一个错误,这个错误的消息是
依赖于库,而不是库本身。怎么了

域的build.gradle中添加:
应用插件:“com.android.library”
我的建议是删除域对数据的依赖性。相反,将数据提供程序注入域中。有一个nice提供了一条线索,说明不同的应用程序部分应该如何关联,以使单元测试变得轻松


另一种选择是遵循@frederick nyawaya的答案,并使用Robolectric设置单元测试。

那么,在域中使用纯java是不可能的吗?通过这种方式,我们可以使用JUnit4,并且可以轻松地对其进行测试。Android项目更复杂,Java插件不知道如何处理它们。