多项目设置

时间:2017-08-02 20:12:21

标签: android gradle build.gradle

我的Android项目中有一个多项目设置:

- android
  - app
  - lib1
  - util

util我定义了一个配置:

task createTestJar(type: Jar) {
    classifier = 'test'
    from "$projectDir/build/intermediates/classes/test/debug"
}

configurations {
    archives
    archives.transitive =  true
}

artifacts {
    archives createTestJar
}

我尝试在lib1中引用它:

// doesn't work
testCompile project(path: ':util', configuration: 'archives')

我在上面的行中收到此错误:

  

错误:无法将com.android.builder.dependency.level2.JavaDependency强制转换为com.android.builder.dependency.level2.AndroidDependency此意外错误的可能原因包括:

     
      
  • Gradle的依赖缓存可能已损坏(这有时会在网络连接超时后发生。)重新下载依赖项和同步项目(需要网络)

  •   
  • Gradle构建过程(守护程序)的状态可能已损坏。停止所有Gradle守护进程可以解决此问题。停止Gradle构建过程(需要重启)    - 您的项目可能正在使用第三方插件,该插件与项目中的其他插件或项目请求的Gradle版本不兼容。

  •   
     

如果Gradle进程损坏,您还可以尝试关闭IDE,然后终止所有Java进程。

// says can't find 'archives' in configuration container
testCompile project(':util').configurations.archives.artifacts.files
// works if I manually create the jar beforehand
testCompile fileTree(dir: "$rootDir/utils/build/libs", include: ['*.jar'])

我尝试打印出我的util模块在​​lib1中的配置:

project(':util').configurations.forEach {
    println("${it.name}")
}  

我得到空的结果。当我在util模块中打印它时,我可以看到一个长列表,其中包含archives个配置。

知道为什么会这样吗?我听说安卓没有的java插件附带了一些默认任务? BTW lib1util都应用了这些插件:

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'

1 个答案:

答案 0 :(得分:0)

为了将来参考,我在android {}区块中错过了这一行:

publishNonDefault true