Extract kotlin-reflect-api module out of kotlin-reflect
This is needed only for faster compilation of the Kotlin project itself and has no effect on the public artifact org.jetbrains.kotlin:kotlin-reflect. The problem this is solving is the rebuild of the project once anything has been changed in modules in 'core' (even inside function bodies, i.e. a non-API change). Previously, changes in 'core' led to the compilation of kotlin-reflect, which led to the rebuild of all modules depending on kotlin-reflect directly or indirectly (which is almost all modules in the project) because kotlin-reflect's artifacts are custom-built and the changes can not be picked up incrementally. But 99.9% of the time the initial changes in 'core' could not have any effect on the usages of kotlin-reflect, because classes from those modules are moved to an internal package in kotlin-reflect and thus are an internal implementation detail. Now, changes in 'core' still lead to the compilation of kotlin-reflect and to the process of building the custom jar. But if a module depends on kotlin-reflect-api, not kotlin-reflect, then the incremental difference checker will detect that the module does not have to be recompiled if there hasn't been any changes to the API of kotlin-reflect-api. Which means that the module will not be rebuilt on every change in 'core'. This commit only introduces the new module. The dependencies (kotlin-reflect -> kotlin-reflect-api) are replaced in the next commit.
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
description = ''
|
||||
|
||||
apply plugin: 'kotlin'
|
||||
|
||||
configureJvm6Project(project)
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
java {
|
||||
srcDir "${rootDir}/core/reflection.jvm/src"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly project(':kotlin-stdlib')
|
||||
compileOnly project(':core:descriptors')
|
||||
compileOnly project(':core:descriptors.jvm')
|
||||
compileOnly project(':core:deserialization')
|
||||
compileOnly project(':core:descriptors.runtime')
|
||||
compileOnly project(':core:util.runtime')
|
||||
}
|
||||
|
||||
compileKotlin {
|
||||
kotlinOptions {
|
||||
freeCompilerArgs = ["-version",
|
||||
"-Xallow-kotlin-package",
|
||||
"-Xnormalize-constructor-calls=enable",
|
||||
"-module-name", "kotlin-reflection",
|
||||
"-Xdump-declarations-to=${buildDir}/reflect-declarations.json"]
|
||||
}
|
||||
}
|
||||
@@ -13,12 +13,11 @@ buildscript {
|
||||
}
|
||||
|
||||
apply plugin: 'com.github.johnrengelman.shadow'
|
||||
apply plugin: 'kotlin'
|
||||
apply plugin: 'java'
|
||||
|
||||
configureJvm6Project(project)
|
||||
configureJavaOnlyJvm6Project(project)
|
||||
configurePublishing(project)
|
||||
|
||||
|
||||
def core = "${rootDir}/core"
|
||||
def annotationsSrc = "${buildDir}/annotations"
|
||||
def relocatedCoreSrc = "${buildDir}/core-relocated"
|
||||
@@ -27,7 +26,6 @@ sourceSets {
|
||||
main {
|
||||
java {
|
||||
srcDir annotationsSrc
|
||||
srcDir "${core}/reflection.jvm/src"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -40,7 +38,11 @@ configurations {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile project(':kotlin-stdlib')
|
||||
|
||||
proguardDeps project(':kotlin-stdlib')
|
||||
|
||||
shadows project(':kotlin-reflect-api')
|
||||
shadows project(':core:descriptors')
|
||||
shadows project(':core:descriptors.jvm')
|
||||
shadows project(':core:deserialization')
|
||||
@@ -48,9 +50,6 @@ dependencies {
|
||||
shadows project(':core:util.runtime')
|
||||
shadows 'javax.inject:javax.inject:1'
|
||||
shadows project(path: ':custom-dependencies:protobuf-lite', configuration: 'default')
|
||||
|
||||
compile project(':kotlin-stdlib')
|
||||
compileOnly project(path: ':custom-dependencies:protobuf-lite', configuration: 'default')
|
||||
}
|
||||
|
||||
task copyAnnotations(type: Sync) {
|
||||
@@ -69,21 +68,6 @@ compileJava {
|
||||
// options.compilerArgs.addAll(["-Xlint:unchecked"])
|
||||
}
|
||||
|
||||
compileKotlin {
|
||||
dependsOn copyAnnotations
|
||||
dependsOn ':custom-dependencies:protobuf-lite:prepare'
|
||||
kotlinOptions {
|
||||
freeCompilerArgs = ["-version",
|
||||
"-Xallow-kotlin-package",
|
||||
"-Xnormalize-constructor-calls=enable",
|
||||
"-module-name", "kotlin-reflection",
|
||||
"-Xdump-declarations-to=${buildDir}/reflect-declarations.json"]
|
||||
}
|
||||
}
|
||||
|
||||
kotlin.experimental.coroutines "enable"
|
||||
|
||||
|
||||
task reflectShadowJar(type: ShadowJar) {
|
||||
classifier = 'shadow'
|
||||
version = null
|
||||
@@ -97,6 +81,8 @@ task reflectShadowJar(type: ShadowJar) {
|
||||
include 'META-INF/services/**'
|
||||
}
|
||||
|
||||
transform(new KotlinModuleShadowTransformer(logger))
|
||||
|
||||
configurations = [project.configurations.shadows]
|
||||
relocate 'org.jetbrains.kotlin', 'kotlin.reflect.jvm.internal.impl'
|
||||
relocate 'javax.inject', 'kotlin.reflect.jvm.internal.impl.javax.inject'
|
||||
|
||||
Reference in New Issue
Block a user