avito-android
51 строка · 2.1 Кб
1package com.avito
2
3import org.gradle.api.Action
4import org.gradle.api.Plugin
5import org.gradle.api.Project
6import org.gradle.api.publish.maven.MavenPublication
7import org.gradle.plugin.devel.GradlePluginDevelopmentExtension
8
9class PublishGradlePlugin : Plugin<Project> {
10
11private fun Project.gradlePlugin(configure: Action<GradlePluginDevelopmentExtension>) =
12extensions.configure("gradlePlugin", configure)
13
14override fun apply(project: Project) {
15with(project) {
16plugins.apply(PublishKotlinBase::class.java)
17plugins.apply(PublishReleasePlugin::class.java)
18plugins.apply("java-gradle-plugin")
19
20gradlePlugin {
21// we publish plugins as simple libraries for now,
22// someone should dive into plugin publication specifics
23// todo MBS-10660
24it.isAutomatedPublishing = false
25}
26
27val pluginPrefix = group.toString()
28
29publishing.apply {
30publications { pubs ->
31afterEvaluate {
32val gradlePlugins = extensions.getByType(GradlePluginDevelopmentExtension::class.java)
33gradlePlugins.plugins.all { pluginDeclaration ->
34pubs.register("${pluginDeclaration.name}PluginMaven", MavenPublication::class.java) {
35it.from(components.getByName("java"))
36require(pluginDeclaration.id.startsWith(pluginPrefix)) {
37"All avito plugins should be prefixed with $pluginPrefix"
38}
39val pluginName = pluginDeclaration.id.substringAfter("$pluginPrefix.")
40if (pluginName != project.name) {
41logger.warn("For project `${project.name}` artifact id changed to `$pluginName`")
42}
43it.artifactId = pluginName
44}
45}
46}
47}
48}
49}
50}
51}
52