编译Groovy和Kotlin?
我正在使用Groovy和Kotlin开发一个小型项目,我的Kotlin代码依赖于我的Groovy代码,而不是相反。 但是,Kotlin首先编译我的代码,而不是Groovy,结果,我得到像Unresolved reference: SiteRepository
一样的错误Unresolved reference: SiteRepository
任何建议,我可以通过更改构建序列,或Kotlin明确取决于Groovy,或任何其他建议来解决这个问题?
它可以这样做:
Groovy第一:
compileGroovy.dependsOn = compileGroovy.taskDependencies.values - 'compileJava' compileKotlin.dependsOn compileGroovy compileKotlin.classpath += files(compileGroovy.destinationDir) classes.dependsOn compileKotlin
或Kotlin第一:
compileKotlin.dependsOn = compileKotlin.taskDependencies.values - 'compileJava' compileGroovy.dependsOn compileKotlin compileGroovy.classpath += files(compileKotlin.destinationDir) classes.dependsOn compileGroovy
清楚的是,你可以选择你的Kotlin代码依赖于Kotlin上的Groovy还是Groovy,但是你不能一概而论。
我认为这不可能在一个模块中针对Groovy编译Kotlin,但是您可以将Groovy(或Kotlin)移动到单独的模块中。 Groovy将被编译成jar,Kotlin现在可以依赖于Groovy代码。 为了帮助你,我写了简单的项目,并发布在github上。
upd 1:
我用kotlin和groovy创建新的模块和项目,并检查任务依赖关系:
./gradlew -m kotlin-groovy:build :kotlin-groovy:compileKotlin SKIPPED :kotlin-groovy:compileJava SKIPPED :kotlin-groovy:compileGroovy SKIPPED :kotlin-groovy:processResources SKIPPED :kotlin-groovy:classes SKIPPED :kotlin-groovy:jar SKIPPED :kotlin-groovy:assemble SKIPPED :kotlin-groovy:compileTestKotlin SKIPPED :kotlin-groovy:compileTestJava SKIPPED :kotlin-groovy:compileTestGroovy SKIPPED :kotlin-groovy:processTestResources SKIPPED :kotlin-groovy:testClasses SKIPPED :kotlin-groovy:test SKIPPED :kotlin-groovy:check SKIPPED :kotlin-groovy:build SKIPPED BUILD SUCCESSFUL Total time: 2.587 secs
看起来像kotlin的变化秩序和groovy任务足够。 但是如果我们以这种方式改变步骤:
./gradlew -m kotlin-groovy:build :kotlin-groovy:compileGroovy SKIPPED :kotlin-groovy:compileKotlin SKIPPED :kotlin-groovy:compileJava SKIPPED :kotlin-groovy:processResources SKIPPED :kotlin-groovy:classes SKIPPED :kotlin-groovy:jar SKIPPED :kotlin-groovy:assemble SKIPPED :kotlin-groovy:compileTestKotlin SKIPPED :kotlin-groovy:compileTestJava SKIPPED :kotlin-groovy:compileTestGroovy SKIPPED :kotlin-groovy:processTestResources SKIPPED :kotlin-groovy:testClasses SKIPPED :kotlin-groovy:test SKIPPED :kotlin-groovy:check SKIPPED :kotlin-groovy:build SKIPPED BUILD SUCCESSFUL Total time: 2.745 secs
构建仍然不起作用,因为Kotlin没有看到Groovy。
- 什么是kotlin-gradle-plugin和kotlin-js-library之间的正确版本匹配?
- TreeWalker检查不与Kotlin / Gradle一起工作?
- Android将kotlin资源部署到maven资源库
- 执行失败的任务'应用程序:copyDebugAndroidTestKotlinClasses' – Android的Kotlin生成错误
- 禁用在Gradle中使用'kotlin'包检查
- 升级到android gradle插件3.0.0+后,项目不会生成
- Gradle – 以非零退出值完成1
- 如何在多模块gradle项目中提供测试数据和类
- 直接解析配置“debugCompile”是不允许的