我的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 lib1
和util
都应用了这些插件:
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
答案 0 :(得分:0)
为了将来参考,我在android {}
区块中错过了这一行:
publishNonDefault true