Build: Make Gradle plugin publications reuse POMs from the main one
#KTI-571
This commit is contained in:
committed by
teamcityserver
parent
80677c88cb
commit
a0469a1d62
@@ -1,6 +1,6 @@
|
||||
@file:Suppress("unused") // usages in build scripts are not tracked properly
|
||||
|
||||
import org.gradle.api.GradleException
|
||||
import com.gradle.publish.PublishTask
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.Task
|
||||
import org.gradle.api.artifacts.ConfigurablePublishArtifact
|
||||
@@ -22,12 +22,12 @@ import org.gradle.api.publish.PublishingExtension
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.gradle.api.publish.tasks.GenerateModuleMetadata
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.tasks.Upload
|
||||
import org.gradle.api.tasks.javadoc.Javadoc
|
||||
import org.gradle.jvm.tasks.Jar
|
||||
import org.gradle.kotlin.dsl.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetContainer
|
||||
import plugins.KotlinBuildPublishingPlugin
|
||||
import plugins.mainPublicationName
|
||||
|
||||
|
||||
private const val MAGIC_DO_NOT_CHANGE_TEST_JAR_TASK_NAME = "testJar"
|
||||
@@ -225,10 +225,23 @@ fun Project.publish(moduleMetadata: Boolean = false, configure: MavenPublication
|
||||
|
||||
val publication = extensions.findByType<PublishingExtension>()
|
||||
?.publications
|
||||
?.findByName(KotlinBuildPublishingPlugin.PUBLICATION_NAME) as MavenPublication
|
||||
?.findByName(mainPublicationName) as MavenPublication
|
||||
publication.configure()
|
||||
}
|
||||
|
||||
fun Project.publishGradlePlugin() {
|
||||
mainPublicationName = "pluginMaven"
|
||||
publish()
|
||||
|
||||
afterEvaluate {
|
||||
tasks.withType<PublishTask> {
|
||||
// Makes plugin publication task reuse poms and metadata from publication named "pluginMaven"
|
||||
useAutomatedPublishing()
|
||||
useGradleModuleMetadataIfAvailable()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Project.idePluginDependency(block: () -> Unit) {
|
||||
val shouldActivate = rootProject.findProperty("publish.ide.plugin.dependencies")?.toString()?.toBoolean() == true
|
||||
if (shouldActivate) {
|
||||
|
||||
@@ -8,7 +8,7 @@ plugins {
|
||||
kotlin("jvm")
|
||||
}
|
||||
|
||||
publish()
|
||||
publishGradlePlugin()
|
||||
standardPublicJars()
|
||||
|
||||
extensions.extraProperties["kotlin.stdlib.default.dependency"] = "false"
|
||||
|
||||
@@ -14,6 +14,7 @@ import org.gradle.api.tasks.bundling.Jar
|
||||
import org.gradle.kotlin.dsl.*
|
||||
import plugins.KotlinBuildPublishingPlugin
|
||||
import plugins.configureRepository
|
||||
import plugins.mainPublicationName
|
||||
import java.util.*
|
||||
|
||||
internal const val PLUGIN_MARKER_SUFFIX = ".gradle.plugin"
|
||||
@@ -26,7 +27,7 @@ fun Project.publishPluginMarkers(withEmptyJars: Boolean = true) {
|
||||
|
||||
val pluginDevelopment = extensions.getByType<PluginBundleExtension>()
|
||||
val publishingExtension = extensions.getByType<PublishingExtension>()
|
||||
val mainPublication = publishingExtension.publications[KotlinBuildPublishingPlugin.PUBLICATION_NAME] as MavenPublication
|
||||
val mainPublication = publishingExtension.publications[mainPublicationName] as MavenPublication
|
||||
|
||||
pluginDevelopment.plugins.forEach { declaration ->
|
||||
val markerPublication = createMavenMarkerPublication(declaration, mainPublication, publishingExtension.publications)
|
||||
|
||||
@@ -68,7 +68,7 @@ class KotlinBuildPublishingPlugin @Inject constructor(
|
||||
|
||||
configure<PublishingExtension> {
|
||||
publications {
|
||||
create<MavenPublication>(PUBLICATION_NAME) {
|
||||
create<MavenPublication>(project.mainPublicationName) {
|
||||
from(kotlinLibraryComponent)
|
||||
|
||||
configureKotlinPomAttributes(project)
|
||||
@@ -79,16 +79,26 @@ class KotlinBuildPublishingPlugin @Inject constructor(
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val PUBLICATION_NAME = "Main"
|
||||
const val DEFAULT_MAIN_PUBLICATION_NAME = "Main"
|
||||
const val MAIN_PUBLICATION_NAME_PROPERTY = "MainPublicationName"
|
||||
const val REPOSITORY_NAME = "Maven"
|
||||
const val ADHOC_COMPONENT_NAME = "kotlinLibrary"
|
||||
|
||||
const val COMPILE_CONFIGURATION = "publishedCompile"
|
||||
const val RUNTIME_CONFIGURATION = "publishedRuntime"
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
var Project.mainPublicationName: String
|
||||
get() {
|
||||
return if (project.extra.has(KotlinBuildPublishingPlugin.MAIN_PUBLICATION_NAME_PROPERTY))
|
||||
project.extra.get(KotlinBuildPublishingPlugin.MAIN_PUBLICATION_NAME_PROPERTY) as String
|
||||
else KotlinBuildPublishingPlugin.DEFAULT_MAIN_PUBLICATION_NAME
|
||||
}
|
||||
set(value) {
|
||||
project.extra.set(KotlinBuildPublishingPlugin.MAIN_PUBLICATION_NAME_PROPERTY, value)
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
private fun humanReadableName(name: String) =
|
||||
name.split("-").joinToString(separator = " ") { it.capitalize(Locale.ROOT) }
|
||||
|
||||
@@ -135,6 +135,10 @@ ext.configurePublishing = { Project project, configure = { } ->
|
||||
}
|
||||
}
|
||||
|
||||
ext.configureGradlePluginPublishing = { Project project ->
|
||||
ArtifactsKt.publishGradlePlugin(project)
|
||||
}
|
||||
|
||||
ext.configurePluginMarkers = { Project project, withEmptyJars = true ->
|
||||
PluginMarkersKt.publishPluginMarkers(project, withEmptyJars)
|
||||
}
|
||||
|
||||
@@ -35,10 +35,6 @@ configure(pluginProjects) { project ->
|
||||
vcsUrl = 'https://github.com/JetBrains/kotlin/'
|
||||
description = 'Kotlin plugins for Gradle'
|
||||
tags = ['kotlin']
|
||||
|
||||
mavenCoordinates {
|
||||
groupId = "org.jetbrains.kotlin"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apply plugin: 'kotlin'
|
||||
apply plugin: 'jps-compatible'
|
||||
|
||||
configurePublishing(project)
|
||||
configureGradlePluginPublishing(project)
|
||||
|
||||
pill {
|
||||
variant = 'FULL'
|
||||
|
||||
@@ -17,7 +17,7 @@ dependencies {
|
||||
|
||||
projectTest(parallel = true)
|
||||
|
||||
publish()
|
||||
publishGradlePlugin()
|
||||
|
||||
sourcesJar()
|
||||
javadocJar()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apply plugin: 'kotlin'
|
||||
apply plugin: 'jps-compatible'
|
||||
|
||||
configurePublishing(project)
|
||||
configureGradlePluginPublishing(project)
|
||||
|
||||
compileJava {
|
||||
sourceCompatibility = 1.8
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apply plugin: 'kotlin'
|
||||
apply plugin: 'jps-compatible'
|
||||
|
||||
configurePublishing(project)
|
||||
configureGradlePluginPublishing(project)
|
||||
|
||||
pill {
|
||||
variant = 'FULL'
|
||||
|
||||
Reference in New Issue
Block a user