【发布时间】:2016-05-27 09:50:41
【问题描述】:
我有使用 Kotlin 编写的所有代码的多项目 Gradle 构建。其中有两个项目:common 和 client。子项目位于中间文件夹中,例如“demo”。所以文件夹结构是:
project
demo
client
build.gradle
common
build.gradle
build.gradle
gradle.properties
settings.gradle
settings.gradle:
rootProject.name = 'demo'
include 'demo/client'
include 'demo/common'
客户端依赖于公共项目compile project(":demo/common")。并且在普通项目中有一个扩展功能:
fun <T> List<Future<T>>.getAll(): Long {
var count = 0L
this.forEach {
it.get()
count++
}
return count
}
如果我尝试在客户端项目中使用它,我会在编译时收到 Unresolved reference: getAll 异常。用法:
...
import org.sandbox.imdg.hazelcast.common.utils.getAll
class CassLoader {
fun loadCalcData(): Long {
...
val futures: List<Future<CalcData>> = items.map { map.putAsync(it.getKey(), it) }
return futures.getAll()
}
}
同时,如果我将getAll 声明放在客户端项目中,一切都可以正常编译。我很确定函数的导入是正确的,但同时我对 Gradle 有一点经验,所以可能会遗漏一些东西。
- 构建:
gradlew clean build - 科特林:1.0.2
- 等级:2.9
UPD:问题出在文件夹结构中(或者可能是我声明的依赖项错误...) - 如果我删除中间文件夹 demo,则一切正常。
【问题讨论】:
-
神奇的
clean/build为我解决了这个问题
标签: gradle extension-methods kotlin