Fix plugin uploading (#2157)

* Fix plugin uploading

* Fix plugin version in bundle samples

* [gradle-plugin] Use unshaded compiler plugin configuration
This commit is contained in:
Ilya Matveev
2018-10-01 14:36:17 +03:00
committed by GitHub
parent bf3cdde30a
commit 65d8b8e7c1
4 changed files with 49 additions and 10 deletions
+6 -1
View File
@@ -49,7 +49,12 @@ ext {
kotlinScriptRuntimeModule="org.jetbrains.kotlin:kotlin-script-runtime:${kotlinVersion}"
konanVersionFull = KonanVersion.Companion.CURRENT
gradlePluginVersion = konanVersionFull.toString()
if (konanVersionFull.meta == MetaVersion.RELEASE) {
gradlePluginVersion = kotlinVersion
} else {
gradlePluginVersion = "$kotlinVersion-native-${KonanVersion.Companion.CURRENT.toString()}"
}
}
allprojects {
+12 -5
View File
@@ -16,7 +16,6 @@
import org.jetbrains.kotlin.konan.KonanVersion
import org.jetbrains.kotlin.konan.MetaVersion
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
/**
* One may use bintrayUser/bintrayKey project properties or BINTRAY_USER/BINTRAY_KEY environment variables to upload
@@ -101,7 +100,7 @@ dependencies {
}
}
task jar(type: ShadowJar, overwrite: true) {
shadowJar {
from sourceSets.main.output
configurations = [project.configurations.bundleDependencies]
classifier = null
@@ -126,14 +125,22 @@ task jar(type: ShadowJar, overwrite: true) {
exclude('META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin')
}
assemble.dependsOn shadowJar
jar {
dependsOn shadowJar
enabled = false
}
pluginUnderTestMetadata {
dependsOn jar
pluginClasspath = files(jar.archivePath) + configurations.shadow
dependsOn shadowJar
pluginClasspath = files(shadowJar.archivePath) + configurations.shadow
}
test {
dependsOn shadowJar
classpath = configurations.testRuntimeClasspath +
sourceSets.test.output +
files(shadowJar.archivePath) +
configurations.shadow
systemProperty("kotlin.version", buildKotlinVersion)
systemProperty("kotlin.repo", buildKotlinCompilerRepo)
if (project.hasProperty("konan.home")) {
@@ -34,6 +34,7 @@ import org.gradle.language.plugins.NativeBasePlugin
import org.gradle.nativeplatform.test.tasks.RunTestExecutable
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
import org.jetbrains.kotlin.gradle.plugin.NATIVE_COMPILER_PLUGIN_CLASSPATH_CONFIGURATION_NAME
import org.jetbrains.kotlin.gradle.plugin.PLUGIN_CLASSPATH_CONFIGURATION_NAME
import org.jetbrains.kotlin.gradle.plugin.SubpluginEnvironment
import org.jetbrains.kotlin.gradle.plugin.experimental.CInteropSettings
@@ -130,8 +131,13 @@ class KotlinNativeBasePlugin: Plugin<ProjectInternal> {
assembleTask.dependsOn(it)
}
project.configurations.maybeCreate(PLUGIN_CLASSPATH_CONFIGURATION_NAME).apply {
isTransitive = false
project.configurations.apply {
maybeCreate(NATIVE_COMPILER_PLUGIN_CLASSPATH_CONFIGURATION_NAME).apply {
isTransitive = false
}
maybeCreate(PLUGIN_CLASSPATH_CONFIGURATION_NAME).apply {
isTransitive = false
}
}
components.withType(AbstractKotlinNativeBinary::class.java) { binary ->
@@ -149,7 +155,7 @@ class KotlinNativeBasePlugin: Plugin<ProjectInternal> {
SubpluginEnvironment.loadSubplugins(this, kotlinVersion)
.addSubpluginOptions<CommonCompilerArguments>(this, it, it.compilerPluginOptions)
it.compilerPluginClasspath = project.configurations.getByName(PLUGIN_CLASSPATH_CONFIGURATION_NAME)
it.compilerPluginClasspath = project.configurations.getByName(NATIVE_COMPILER_PLUGIN_CLASSPATH_CONFIGURATION_NAME)
// Register an API header produced for shared/static library as a task output.
if (binary.kind == CompilerOutputKind.DYNAMIC || binary.kind == CompilerOutputKind.STATIC) {
@@ -844,4 +844,25 @@ class ExperimentalPluginTests {
}
}
}
}
@Test
fun `Plugin should provide a correct serialization compiler plugin`() {
withProject {
pluginManager.apply("kotlinx-serialization-native")
repositories.apply {
jcenter()
maven { it.setUrl("http://kotlin.bintray.com/kotlin-eap") }
maven { it.setUrl("http://kotlin.bintray.com/kotlin-dev") }
}
evaluate()
tasks.withType(KotlinNativeCompile::class.java).all {
val compileClassPath = it.compilerPluginClasspath
assertNotNull(compileClassPath)
val files = compileClassPath.files
assertTrue(files.isNotEmpty(), "No compiler plugins in the classpath")
assertEquals(1, files.size, "More than one compiler plugin in the classpath")
assertTrue(files.single().absolutePath.contains("kotlin-serialization-unshaded"), "No unshaded version of serialization plugin in the classpath")
}
}
}
}