Русский
Русский
English
Статистика
Реклама

Из JCenter в Maven или короткая заметка о публикации мультиплатформы Kotlin

Недавно появилась новость о том, что JCenter скоро будет закрыт и как нам дальше жить там не сказано надо бы переезжать куда-то ещё. Лично для меня главным кандидатом стал MavenCentral, поскольку я уже давно там публикуюсь, хотя последний год привык делать это через Bintray. В этой заметке будет краткая информация о подводных, с которыми я встретился и как пришлось поменять свои скрипты публикции.

В ЭТОЙ СТАТЬЕ НЕТ ИНФОРМАЦИИ О ПУБЛИКАЦИИ НАТИВНХ ТАРГЕТОВ. И тем не менее, надеюсь, информация в статье будет вам полезна.

Наверно, уже писали

Действительно, есть несколько статей на эту тему (2019 года и 2021), но на данный момент я не видел ни одной полноценной статьи с информацией о скриптах публикации (наверное, просто не туда смотрел). Большую часть информации можно взять из статьи (регистрация в Sonatype, регистрация домена, создание GPG ключа и его назначение). Если вкратце, вот вам универсальный скрипт публикации мультиплатформенного проекта:

apply plugin: 'maven-publish'apply plugin: 'signing'task javadocsJar(type: Jar) { // нужно, чтобы javadocs точно были включены в публикацию    classifier = 'javadoc'}publishing {    publications.all {        artifact javadocsJar        pom {            description = "Ваше описание проекта"            name = "${project.name}"            url = "https://github.com/Owner/Project" // здесь обычная ссылка на проект, может быть и не github            scm {                developerConnection = "scm:git:[fetch=]/*ВАША ССЛКА НА .git файл*/[push=]/*Повторить предыдущую ссылку*/"                url = "/*Ещё раз повторить предыдущую ссылку*/"            }            developers {                    developer {                        id = "ID разработчика"                        name = "Имя разработчика"                        email = "email разработчика"                    }            }            licenses {                    license {                        name = "Имя лицензии"                        url = "Ссылка на LICENSE файл"                    }                            }        }                repositories {            // тут только Maven Central            maven {                name = "sonatype"                url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/")                credentials {                    username = project.hasProperty('SONATYPE_USER') ? project.property('SONATYPE_USER') : System.getenv('SONATYPE_USER')                    password = project.hasProperty('SONATYPE_PASSWORD') ? project.property('SONATYPE_PASSWORD') : System.getenv('SONATYPE_PASSWORD')                }            }        }    }}signing {    useGpgCmd()    sign publishing.publications}

Вы можете посмотреть на пример этого скрипта тут. Во время переезде с JCenter я встретился со следующими ошибками:

  • maven url должен присваиваться именно uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/")

  • Подпись должна производиться именно для publishing.publications (у меня раньше подписывась каждая публикация отдельно, отчего Java таргеты (включая Android) не получали свои подписи)

Публикация

Перед публикацией не забудьте предоставить в gradle переменные SONATYPE_USER и SONATYPE_PASSWORD. Это можно сделать несколькими способами:

  • Положить их в ~/.gradle/gradle.properties как обычные переменные

  • Экпортировать их перед публикацией в терминале (как это обычно делается в CI билдах)

Можно почитать в статьях в начале о том, как это сделать. Для публикации следует использовать следующий вызов:

$ ./gradlew --no-parallel publishAllPublicationsToSonatypeRepository

--no-parallel тут используется по той причине, что если у вас используется параллельное построение проекта (флаг --parallel или org.gradle.parallel=true в gradle.properties), то без флага отключения параллельного построения публикация будет произведена в несколько репозиторией, что может повлечь за собой невозможность закрыть и опубликовать релизы (об этом тоже писалось в статьях выше).

Вместо заключения

Публикация библиотеки - штука сложная, а потому я искренне желаю вам удачи на этом поприще. Если есть замечания/дополнения или ещё что-то, что может помочь другим - пишите в комментариях, чтобы я добавил об этом заметку в статью. Всего хорошего :)

Источник: habr.com
К списку статей
Опубликовано: 06.02.2021 10:17:52
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Kotlin

Kotlin multiplatform

Публикация

Jcenter

Bintray

Sonatype

Maven central

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru