[Kotlin] Из JCenter в Maven или короткая заметка о публикации мультиплатформы Kotlin
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Недавно появилась новость о том, что 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
===========
Похожие новости:
- [Высокая производительность, Программирование, Java, Конференции] JPoint и Joker: какие доклады запомнились мне больше всего
- [Разработка мобильных приложений, Разработка под Android, Kotlin, Учебный процесс в IT] Android Academy. Вы все пропустили! Но это не точно…
- [Функциональное программирование, Kotlin] Функциональный Kotlin. Во имя добра, радуги и всего такого
- [Тестирование IT-систем, Разработка под Android] Тестирование From Zero to Hero. Часть 1
- [Совершенный код, Разработка под Android, Kotlin] Руководство по стилю Kotlin для Android разработчиков (Часть I)
- [Java, Параллельное программирование, Kotlin] Лечим Java Reactor при помощи Kotlin Coroutines
- [Тестирование веб-сервисов, Kotlin] Тестирование Kotlin/JS: фреймворки, корутины и все-все-все
- [Java, Разработка под Android, Kotlin] Повышение производительности с Kotlin
- [Программирование, Java] Jmix — будущее CUBA Platform
- [Kotlin] Нововведения в Kotlin 1.4.0
Теги для поиска: #_kotlin, #_kotlin_multiplatform, #_publikatsija (публикация), #_jcenter, #_bintray, #_sonatype, #_maven_central, #_kotlin
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:43
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Недавно появилась новость о том, что 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 }
$ ./gradlew --no-parallel publishAllPublicationsToSonatypeRepository
=========== Источник: habr.com =========== Похожие новости:
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:43
Часовой пояс: UTC + 5