Eri*_*agt 20 groovy gradle kotlin
我正在使用Groovy和Kotlin开发一个小项目,而我的Kotlin代码依赖于我的Groovy代码,而不是相反.但是,Kotlin首先编译我的代码而不是Groovy,因此,我得到的错误就像Unresolved reference: SiteRepository
任何建议我如何解决这个问题,通过改变构建顺序,或者Kotlin明确依赖于Groovy,还是任何其他建议?
jks*_*der 26
可以这样做:
Kotlin第一:
//compileKotlin.dependsOn = compileKotlin.taskDependencies.values - 'compileJava'
compileGroovy.dependsOn compileKotlin
compileGroovy.classpath += files(compileKotlin.destinationDir)
classes.dependsOn compileGroovy
Run Code Online (Sandbox Code Playgroud)
Groovy第一:
compileGroovy.dependsOn = compileGroovy.taskDependencies.values - 'compileJava'
compileKotlin.dependsOn compileGroovy
compileKotlin.classpath += files(compileGroovy.destinationDir)
classes.dependsOn compileKotlin
Run Code Online (Sandbox Code Playgroud)
或者Kotlin第一:
compileKotlin.dependsOn = compileKotlin.taskDependencies.values - 'compileJava'
compileGroovy.dependsOn compileKotlin
compileGroovy.classpath += files(compileKotlin.destinationDir)
classes.dependsOn compileGroovy
Run Code Online (Sandbox Code Playgroud)
为了清楚起见,你可以选择你的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
Run Code Online (Sandbox Code Playgroud)
看起来像改变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
Run Code Online (Sandbox Code Playgroud)
Build仍然不起作用,因为Kotlin没有看到Groovy.
| 归档时间: |
|
| 查看次数: |
3208 次 |
| 最近记录: |