Gradle构建中未解决的Kotlin扩展函数的引用
我有用Kotlin编写的所有代码构建多个项目Gradle。 有两个项目:普通和客户端。 子项目在中间文件夹,说“演示”。 所以文件夹结构是:
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")
。 共同项目中有一个扩展function:
fun List<Future>.getAll(): Long { var count = 0L this.forEach { it.get() count++ } return count }
如果我尝试在客户端项目中使用它,我会在编译时得到Unresolved reference: getAll
exception。 用法:
... import org.sandbox.imdg.hazelcast.common.utils.getAll class CassLoader { fun loadCalcData(): Long { ... val futures: List<Future> = items.map { map.putAsync(it.getKey(), it) } return futures.getAll() } }
同时,如果我把getAll
声明放在客户端项目中,一切都可以正常编译。 我敢肯定,该函数的导入是正确的,但同时我有一点经验与Gradle,所以可能会错过的东西。
- 构建:
gradlew clean build
- Kotlin:1.0.2
- Gradle:2.9
UPD:问题是在文件夹结构(或可能是我声明依赖错误…) – 如果我删除中间文件夹演示everytning是好的。
检查是否在根settings.gradle
包含了两个项目。
用最少的工作设置检查这个要点 。
settings.gradle :
rootProject.name = 'demo' include 'client' include 'common'
build.gradle :
buildscript { repositories { jcenter() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" } } subprojects { apply plugin: 'kotlin' repositories { jcenter() maven { url "http://repository.jetbrains.com/all" } } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" } }
公共/ SRC /主/科特林/通过的/ dev / madhead /演示/普通/ Funktions.kt
package by.dev.madhead.demo.common fun String.revert(): String { return this.reversed() }
客户端/的build.gradle
dependencies { compile project(':common') }
客户端/ src目录/主/科特林/通过的/ dev / madhead /演示/客户/ App.kt
package by.dev.madhead.demo.client import by.dev.madhead.demo.common.revert fun main(args: Array) { println("Hello".revert()) }
好的,问题出在gradle.settings中,包含错误的子项目。 应该
include 'demo:common' include 'demo:client'
代替
include 'demo/common' include 'demo/client'
然后为依赖项compile project(":demo:common")
。
- Android从Gradle和Kotlin的各种错误
- 分割所有输出目录gradle
- 有没有办法使用Gradle将Kotlin类编译为JavaScript?
- 如何在Android Studio 3.1 Canary 3中添加Gradle的Kotlin插件
- 错误:执行失败的任务':app:kaptDemoTestingDebugKotlin'
- 无法为org.gradle.api.Projecttypes的项目’core’设置未知属性’transitive’
- Gradle – 以非零退出值完成1
- Android,Gradle:为什么(第二次)“gradlew build –build-cache”不能马上完成?
- 与Android和桌面项目共享一个Kotlin模块