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: getAllexception。 用法:

 ... 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是好的。

2 Solutions collect form web for “Gradle构建中未解决的Kotlin扩展函数的引用”

检查是否在根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")

  • Kotlin,ArrayList的set方法不会替换给定的元素
  • Kotlin,Number的通用操作
  • 创建不共享通用参数的多个Kotlin构造函数
  • Kotlin集合图导致“types检查已经运行成Kotlin递归”错误
  • 如何让Kotlin编译器将警告视为错误?
  • 比较没有ID的Kotlin中的数据类
  • 制作一个基本的Kotlin SSH应用程序,每次崩溃
  • POJO在kotlin中响应这个XML响应
  • Kotlin - 用重复元素创建一个可变列表
  • 使用String name()声明实现Java接口的Kotlin枚举
  • 按位&不适用于kotlin中的字节
  • Kotlin language will be the best programming language for Android.