Gradle: изменяйте имена артефактов только при публикации на локальные - PullRequest
0 голосов
/ 05 августа 2020

Я хочу добавить суффикс -LOCAL к моей версии артефакта, только когда я публикую sh в mavenLocal() с помощью плагина maven-publish, чтобы, когда я хочу добавить его в свои зависимости другого моего проекта, я можно добавить зависимость следующим образом:

dependencies {
    implementation("my.group", "my-jar", "1.0.0-LOCAL")
}

Решение, которое я пробовал, заключается в объединении строки в файле `publishing

publishing {
    publications {
        create<MavenPublication>("maven") {
            artifacts {
                artifact(tasks["sourcesJar"]) {
                    builtBy(tasks["remapSourcesJar"])
                    version += "LOCAL"
                }

                artifact(tasks["javadocJar"]) {
                    version += "LOCAL"
                }
                artifact(tasks["remapJar"]) {
                    version += "LOCAL"
                }
            }
        }

        repositories {
            mavenLocal()
            maven(url = "some url") { name = "E" }
        }
    }
}

Но изменение не динамическое c, это изменит название версии, когда я опубликую в другом репозитории (вероятно, я еще не пробовал). Я хочу изменить это только при локальной публикации.

Как мне go решить эту проблему?

1 Ответ

0 голосов
/ 05 августа 2020

у вас должно быть 2 артефакта публикации, а затем условная публикация sh .. см. https://docs.gradle.org/current/userguide/publishing_customization.html

publishing {
    publications {
        mavenLocal(MavenPublication) {
            version += "-LOCAL"
            from components.java
        }
        maven(MavenPublication) {
            from components.java
        }
    }
    repositories {
        maven {
            url = uri("$buildDir/repos/releases")
        }
        maven {
            url = uri("$buildDir/repos/snaps")
        }
    }
}

tasks.withType(PublishToMavenRepository) {
    onlyIf {
        publication == publishing.publications.maven
    }
}
tasks.withType(PublishToMavenLocal) {
    onlyIf {
        publication == publishing.publications.mavenLocal
    }
}
...