Задача Gradle: сбой SignMavenJavaPublication, поскольку у него нет настроенной подписиJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Задача Gradle: сбой SignMavenJavaPublication, поскольку у него нет настроенной подписи

Сообщение Anonymous »

Я пытаюсь опубликовать библиотеку Java в центральном репозитории maven.
Я никогда раньше этого не делал. Этот проект предназначен для тестирования. Когда я выясню,
как правильно опубликовать проект, я опубликую настоящую библиотеку.
Моя цель — иметь возможность добавить этот проект в качестве зависимости для других проектов.
Я знаю Я мог бы включить его как .jar, но хочу узнать о других способах импорта зависимостей.
При выполнении задачи:

Код: Выделить всё

./gradlew publish
в корневой папке моего проекта я получаю ошибку сборки:

Код: Выделить всё

> Task :signMavenJavaPublication FAILED
Caching disabled for task ':signMavenJavaPublication' because:
Build cache is disabled
Task ':signMavenJavaPublication' is not up-to-date because:
Task has failed previously.
:signMavenJavaPublication (Thread[Execution worker for ':',5,main]) completed. Took 0.004 secs.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':signMavenJavaPublication'.
> Cannot perform signing task ':signMavenJavaPublication' because it has no configured signatory

РЕДАКТИРОВАТЬ:
Я добился некоторого прогресса. Я опубликую это внизу вопроса.
Последние четыре дня я пытался понять, почему. Код сборки я опубликую ниже, но сначала я пройду все шаги, которые я выполнил, чтобы иметь возможность публиковать в центральном репозитории.
Мой опыт работы с Gradle ограничен, но я думаю, что знаю основы.
Я прочитал различную документацию на:
central.sonatype.org
Gradle
о том, как публиковать/подписывать. Я не знаю точно, что я делаю и почему.
  • Подайте заявку на получение GroupID в Sonatype Jira. Эта проблема/заявка решена. И я должен иметь возможность публиковать SNAPSHOT и публиковать артефакты на s01.oss.sonatype.org. Мой GroupID — это мой домен GitHub. Насколько мне известно, это позволяет мне публиковать свои проекты/библиотеки под именем «io.github.username».
  • Загрузите и настройте GnuPG:
В какой-то момент установки меня попросили создать Пароль GnuPG (signing.password).
Не помню когда.

Код: Выделить всё

gpg --gen-key
Ввожу свое имя и адрес электронной почты. Теперь я могу печатать: И я получаю следующее (не фактические значения):

Код: Выделить всё

sec   ed25519 2022-05-25 [SC] [expires: 2024-05-24]
****************************************
uid           [ultimate] My Name 
ssb   cv25519 2022-05-25 [E] [expires: 2024-05-24]
Итак, ********************************** **** — это пароль, который я использую. (последние 8 цифр).
Теперь я экспортирую ключ. (Я думаю, это создает мой секретный ключ, верно?):

Код: Выделить всё

gpg --export-secret-keys ******** > C:\users\username\secring.gpg
Насколько я знаю, это может быть любая папка. Если папка соответствует:

Код: Выделить всё

signing.secretKeyRingFile=\users\username\secring.gpg
в файле gradle.properties.
И как правильно это вводить?

Код: Выделить всё

signing.secretKeyRingFile=\users\username\secring.gpg
signing.secretKeyRingFile=C:\users\username\secring.gpg
signing.secretKeyRingFile=C:\\users\\username\\secring.gpg
signing.secretKeyRingFile="C:\\users\\username\\secring.gpg"
(Думаю, я испробовал все варианты)
Затем мне нужно отправить открытый ключ на какой-нибудь сервер ключей. И есть несколько альтернатив:
  • keyserver.ubuntu.com
  • keys.openpgp.org
  • pgp.mit.edu
Я попробовал разослать это всем.

Код: Выделить всё

gpg --keyserver hkp://keyserver.ubuntu.com --send-keys ****************************************
И чтобы можно было проверить, получил ли сервер ключ:

Код: Выделить всё

gpg --keyserver hkp://keyserver.ubuntu.com --search-key 'my-email@mail.com'
И они это сделали. По крайней мере, сервер отвечает примерно 16 последними цифрами ключа.
  • Итак, на этом этапе я настроил простой Java-тест. проект под названием «Хранилище». Переношу его в свой репозиторий на GitHub. под тем же именем.
Изображение
  • И теперь мы можем добраться до файлов Gradle. Имейте в виду, я не совсем уверен, правильно ли это. Если я что-то упустил, или что-то ненужно. Пожалуйста, дайте мне знать.
build.gradle

Код: Выделить всё

plugins {
id 'java-library'
id 'signing'
id 'maven-publish'
}

group 'io.github.username'
version '0.0.1'

repositories {
mavenCentral()
maven { url "http://repo.maven.apache.org/maven2" }
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}

dependencies {}

java {
withJavadocJar()
withSourcesJar()
}

publishing {
publications {
mavenJava(MavenPublication) {

groupId = 'io.github.username'
artifactId = 'storage'
version = '0.0.1'
from components.java

pom {
name = 'Storage'
description = 'Storage is an open-source Java library test'
url = 'https://github.com/username/Storage'
inceptionYear = '2022'

licenses {
license {
name = 'MIT License'
url = 'http://www.opensource.org/licenses/mit-license.php'
}
}
developers {
developer {
id = 'sonatype-username'
name = 'Full Name'
email = 'my-email@mail.com'
}
}
scm {
connection = 'scm:git:git://github.com/username/Storage.git'
developerConnection = 'scm:git:ssh://github.com/username/Storage.git'
url = 'https://github.com/username/Storage'
}
}
}
}
repositories {
maven {
name = "OSSRH"
url = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
credentials {
username = project.properties["ossrhUsername"]
password = project.properties["ossrhPassword"]
}
}
}
}

signing {
sign publishing.publications.mavenJava
}

javadoc {
if(JavaVersion.current().isJava9Compatible()) {
options.addBooleanOption('html5', true)
}
}
gradle-wrapper.properties

Код: Выделить всё

# auto-generated
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

# Sonatype variables
ossrhUsername=username
ossrhPassword=password

# GnuPG
signing.keyId=********
singing.password=GnpPassword
signing.secretKeyRingFile=\Users\username\secring.gpg
settings.gradle

Код: Выделить всё

rootProject.name = 'Storage'
Вот и должно быть. Но я могу включить версии различного программного обеспечения/инструментов:
  • ОС Windows 10
  • GnuPG 2.3.6
    Gradle 7.4.2
  • Java 13.0.1
  • Groovy 3.0.9
ПРОГРЕСС:
Я опубликовал проект в менеджере репозитория Nexus.
Так что я знаю тот факт, что build.gradle может получить доступ к моему файлу gradle.properties и прочитать его содержимое.
Я выполнил задачу публикации, исключив часть подписи.
Я отправил свой ключ (теперь два ключа) обоим:
  • keyserver.ubuntu.com
    pgp.mit.edu
keys.openpgp.org, похоже, не работает. Я получаю сообщение gpg: ошибка отправки сервера ключей: срок действия сертификата истек
Когда я отправляю ключ на сервер, я использую ПОЛНЫЙ идентификатор ключа.
Я могу запросить сервер, чтобы узнать, действительно ли он получил ключи: gpg --keyserver hkp://keyserver.ubuntu.com --search-key 'my-email@mail.com'
И оба сервера получили по 2 ключа:

Код: Выделить всё

(1)     My Name 
263 bit EDDSA key ****************, created: 2022-05-28
(2)     My Name 
263 bit EDDSA key ****************, created: 2022-05-25
Keys 1-2 of 2 for "my-email@mail.com".  Enter number(s), N)ext, or Q)uit >

*************** — это на самом деле последние цифры моих ключей. Это должно быть правильно. Должен ли я отправлять на сервер только последние 8 цифр ключа?
И Singing.password, который я использую, тот же, что и при создании ключа.
Но по какой-то эзотерической причине. Подписание по-прежнему не работает. Нет ли способа определить ТОЧНУЮ причину сбоя?
Пожалуйста, взгляните на мой build.gradle. Есть ли альтернативный способ публикации/подписания, который я мог бы попробовать?
Имеет ли значение имя файла секретного ключа? secring.gpg

Подробнее здесь: https://stackoverflow.com/questions/724 ... red-signat
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Сбой сборки Gradle в React Native: не удалось найти артефакты response-native-gradle-plugin и kotlin-gradle-plugin.
    Anonymous » » в форуме Android
    0 Ответы
    127 Просмотры
    Последнее сообщение Anonymous
  • Выполнение пакетных прогнозов с точно настроенной моделью PALM в Vertex AI всегда выдает ValueError.
    Anonymous » » в форуме Python
    0 Ответы
    92 Просмотры
    Последнее сообщение Anonymous
  • Создание динамического объекта в настроенной сцене
    Anonymous » » в форуме C++
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Проблема с настроенной линейной регрессией
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как открыть файл NetCDF(.nc) из настроенной модели WRF через C++/Python?
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»