From 8c8d0eefbbbb5d8e7429cc6fa1c0089ae9518108 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 18 Jun 2018 17:34:09 +0200 Subject: [PATCH] Relocate package org.jetbrains.kotlin in kotlinx-metadata-jvm To prevent clashes in scenarios where it's used together with the Kotlin compiler (e.g. in annotation processing) #KT-24945 Fixed --- libraries/kotlinx-metadata/jvm/ChangeLog.md | 1 + .../kotlinx-metadata/jvm/build.gradle.kts | 3 ++- .../build.gradle | 7 +++++-- libraries/tools/kotlinp/build.gradle.kts | 20 +++++++++++++++---- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/libraries/kotlinx-metadata/jvm/ChangeLog.md b/libraries/kotlinx-metadata/jvm/ChangeLog.md index 38b34461321..24959b43aa9 100644 --- a/libraries/kotlinx-metadata/jvm/ChangeLog.md +++ b/libraries/kotlinx-metadata/jvm/ChangeLog.md @@ -4,6 +4,7 @@ - Support metadata of local delegated properties (see `JvmDeclarationContainerExtensionVisitor.visitLocalDelegatedProperty`) - [`KT-24881`](https://youtrack.jetbrains.com/issue/KT-24881) Use correct class loader in kotlinx-metadata to load MetadataExtensions implementations +- [`KT-24945`](https://youtrack.jetbrains.com/issue/KT-24945) Relocate package org.jetbrains.kotlin to fix IllegalAccessError in annotation processing ## 0.0.2 diff --git a/libraries/kotlinx-metadata/jvm/build.gradle.kts b/libraries/kotlinx-metadata/jvm/build.gradle.kts index 6e5597bac11..e631de46a20 100644 --- a/libraries/kotlinx-metadata/jvm/build.gradle.kts +++ b/libraries/kotlinx-metadata/jvm/build.gradle.kts @@ -45,13 +45,14 @@ dependencies { noDefaultJar() -val shadowJar = task("shadowJar") { +task("shadowJar") { callGroovy("manifestAttributes", manifest, project) manifest.attributes["Implementation-Version"] = version from(mainSourceSet.output) exclude("**/*.proto") configurations = listOf(shadows) + relocate("org.jetbrains.kotlin", "kotlinx.metadata.internal") val artifactRef = outputs.files.singleFile runtimeJarArtifactBy(this, artifactRef) diff --git a/libraries/tools/binary-compatibility-validator/build.gradle b/libraries/tools/binary-compatibility-validator/build.gradle index d9861bba75c..5dfbd6e8b93 100644 --- a/libraries/tools/binary-compatibility-validator/build.gradle +++ b/libraries/tools/binary-compatibility-validator/build.gradle @@ -6,10 +6,13 @@ configurations { dependencies { compile project(':kotlin-stdlib') - compile project(':kotlinx-metadata') - compile project(':kotlinx-metadata-jvm') + compileOnly project(':kotlinx-metadata') + compileOnly project(':kotlinx-metadata-jvm') compile 'org.ow2.asm:asm:6.0' compile 'org.ow2.asm:asm-tree:6.0' + + runtime project(path: ':kotlinx-metadata-jvm', configuration: 'runtime') + testCompile project(':kotlin-test:kotlin-test-junit') testArtifacts project(':kotlin-stdlib') diff --git a/libraries/tools/kotlinp/build.gradle.kts b/libraries/tools/kotlinp/build.gradle.kts index e1dcde861c6..3c327ce6176 100644 --- a/libraries/tools/kotlinp/build.gradle.kts +++ b/libraries/tools/kotlinp/build.gradle.kts @@ -7,14 +7,21 @@ plugins { } val shadows by configurations.creating -shadows.extendsFrom(configurations.getByName("compile")) dependencies { - compile(project(":kotlinx-metadata")) - compile(project(":kotlinx-metadata-jvm")) + compileOnly(project(":kotlinx-metadata")) + compileOnly(project(":kotlinx-metadata-jvm")) compile("org.ow2.asm:asm:6.0") + + testCompileOnly(project(":kotlinx-metadata")) + testCompileOnly(project(":kotlinx-metadata-jvm")) testCompile(commonDep("junit:junit")) testCompile(projectTests(":generators:test-generator")) + + testRuntime(project(":kotlinx-metadata-jvm", configuration = "runtime")) + + shadows(project(":kotlinx-metadata-jvm", configuration = "runtime")) + shadows("org.ow2.asm:asm:6.0") } sourceSets { @@ -42,4 +49,9 @@ tasks { "assemble" { dependsOn(shadowJar) } -} \ No newline at end of file + "test" { + // These dependencies are needed because ForTestCompileRuntime loads jars from dist + dependsOn(":kotlin-reflect:dist") + dependsOn(":kotlin-script-runtime:dist") + } +}