Рубрики
Без рубрики

Переход на OSSRH с Gradle в 2020 году

Объясните современный способ развертывания артефактов в OSSRH. Помеченный как java, gradle.

Похоже, что метод, описанный в официальной странице , немного устарел. Здесь я представлю современный способ.

Метаданные и подпись

Используйте плагин maven-publish вместо плагина maven . Нет необходимости настраивать расширение artifacts .

Файлы Jar

Свойство classifier для Jar task теперь устарело . Вместо этого мы можем использовать с Javadoc Jar() и с исходным кодом Jar() в java расширении

java {
    withJavadocJar()
    withSourcesJar()
}

Артефакты подписи

Мы используем плагин maven-publish , поэтому расширение signing в нашем скрипте сборки будет выглядеть следующим образом:

ext.isReleaseVersion = !version.endsWith("SNAPSHOT")

// -------------------------------------
// here 'publishing' extension will come
// -------------------------------------

signing {
    sign publishing.publications.mavenJava
}
tasks.withType(Sign) {
    onlyIf { isReleaseVersion }
}

Определение и загрузка метаданных

Вместо расширения uploadArchives для плагина maven настройте расширение publishing для плагина maven-publish .

publishing {
    repositories {
        maven {
            def releaseRepo = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
            def snapshotRepo = "https://oss.sonatype.org/content/repositories/snapshots/"
            url = isReleaseVersion ? releaseRepo : snapshotRepo
            credentials {
                username = project.hasProperty('ossrhUsername') ? ossrhUsername : "Unknown user"
                password = project.hasProperty('ossrhPassword') ? ossrhPassword : "Unknown password"
            }
        }
    }

    publications {
        mavenJava(MavenPublication) {
            pom {
                groupId = 'com.example'
                name = 'example project'
                description = 'Example Project to learn how to deploy to OSSRH'
                url = 'https://example.com/'
                from components.java
                licenses {
                    license {
                        name = 'The Apache License, Version 2.0'
                        url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                scm {
                    connection = 'scm:git:git@github.com:example.com/example.git'
                    developerConnection = 'scm:git:git@github.com:example.com/example.git'
                    url = 'https://github.com/example.com/example/'
                }
            }
        }
    }
}

Развертывание

Используйте задачу publishToMavenLocal для публикации артефактов в локальном репозитории maven.

Используйте задачу publish для публикации артефактов в удаленных репозиториях maven. Не забудьте посетить oss.sonatype.org чтобы закрыть и освободить промежуточный репозиторий.

Оригинал: “https://dev.to/kengotoda/deploying-to-ossrh-with-gradle-in-2020-1lhi”