avito-android

Форк
0
51 строка · 2.1 Кб
1
package com.avito
2

3
import org.gradle.api.Action
4
import org.gradle.api.Plugin
5
import org.gradle.api.Project
6
import org.gradle.api.publish.maven.MavenPublication
7
import org.gradle.plugin.devel.GradlePluginDevelopmentExtension
8

9
class PublishGradlePlugin : Plugin<Project> {
10

11
    private fun Project.gradlePlugin(configure: Action<GradlePluginDevelopmentExtension>) =
12
        extensions.configure("gradlePlugin", configure)
13

14
    override fun apply(project: Project) {
15
        with(project) {
16
            plugins.apply(PublishKotlinBase::class.java)
17
            plugins.apply(PublishReleasePlugin::class.java)
18
            plugins.apply("java-gradle-plugin")
19

20
            gradlePlugin {
21
                // we publish plugins as simple libraries for now,
22
                // someone should dive into plugin publication specifics
23
                // todo MBS-10660
24
                it.isAutomatedPublishing = false
25
            }
26

27
            val pluginPrefix = group.toString()
28

29
            publishing.apply {
30
                publications { pubs ->
31
                    afterEvaluate {
32
                        val gradlePlugins = extensions.getByType(GradlePluginDevelopmentExtension::class.java)
33
                        gradlePlugins.plugins.all { pluginDeclaration ->
34
                            pubs.register("${pluginDeclaration.name}PluginMaven", MavenPublication::class.java) {
35
                                it.from(components.getByName("java"))
36
                                require(pluginDeclaration.id.startsWith(pluginPrefix)) {
37
                                    "All avito plugins should be prefixed with $pluginPrefix"
38
                                }
39
                                val pluginName = pluginDeclaration.id.substringAfter("$pluginPrefix.")
40
                                if (pluginName != project.name) {
41
                                    logger.warn("For project `${project.name}` artifact id changed to `$pluginName`")
42
                                }
43
                                it.artifactId = pluginName
44
                            }
45
                        }
46
                    }
47
                }
48
            }
49
        }
50
    }
51
}
52

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.