Как Java Developer (Pseudo), работа не должна быть отделена от Maven. Иногда нужно опубликовать свои собственные компоненты в центральный репозиторий Maven (oss.sonatype.org/). 但是经常有这样那样的坑(因为总是换电脑 XD),在这里记录一下,以备后续查阅。
Шаги загрузки
Общие шаги для публикации проекта в центральном репозитории maven следующие:
-
Зарегистрируйте учетную запись в Sonatype. адрес:вопросов.так что type.org/secure/sign…
-
Отправьте запрос на освобождение. (только первый раз)
- Создайте проблему:вопросы.так что type.org/secure/CR EA…
- Тип проекта
Community Support - Open Source Project Repository Hosting
-
groupId
Вы должны владеть соответствующим доменным именем
-
Сгенерируйте пару ключей с помощью GPG.
Установка Windows:gpg4win.org/
Установка Mac:
brew install gpg
-
gpg --version
Проверьте, прошла ли установка успешно -
gpg --gen-key
Создать пару ключей -
gpg --list-keys
Посмотреть открытый ключ -
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 公钥ID
Опубликуйте открытый ключ на сервере ключей PGP. -
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 公钥ID
Запросить, успешно ли выпущен открытый ключ
-
-
Настройте мавен. Файлы конфигурации Maven, которые необходимо изменить, включают:
setting.xml
(глобальный уровень) сpom.xml
(уровень проекта).-
setting.xml
Обзор конфигурации<settings> ... <servers> <server> <id>snapshotRepository-id</id> <username>用户名</username> <password>密码</password> </server> </servers> ... </settings>
Используйте имя пользователя и пароль зарегистрированной учетной записи Sonatype для настройки указанной выше информации о сервере.
я здесь
snapshotRepository-id
должно быть таким же, как следующееpom.xml
Снапшотрепозиторий и идентификатор в репозитории согласованы.-
pom.xml
Обзор конфигурации
<project> ... <name>your project's name</name> <description>your project's description</description> <url>http://www.chengww.com/</url> <licenses> <license> <name>The Apache Software License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> </license> </licenses> <developers> <developer> <name>chengww</name> <email>chengww5217@163.com</email> </developer> </developers> ... <profiles> <profile> <id>release</id> <build> <plugins> <!-- Source --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <!-- Javadoc --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <!-- GPG --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.5</version> <executions> <execution> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <distributionManagement> <snapshotRepository> <id>snapshotRepository-id</id> <url>https://oss.sonatype.org/content/repositories/snapshots/</url> </snapshotRepository> <repository> <id>snapshotRepository-id</id> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> </repository> </distributionManagement> </profile> </profiles> ... </project>
Примечание: выше
pom.xml
Должен включать: имя, описание, URL, лицензии, разработчиков, scm и другую базовую информацию, кроме того, используя функцию профиля Maven, только при выпуске, создать исходный пакет, создать пакет документов и использовать GPG для цифровых подписей. Кроме того, идентификатор в snapshotRepository и репозитории должен быть таким же, какsetting.xml
Идентификатор сервера тот же. -
-
-
Загрузить компоненты в OSS.
mvn clean deploy -P release
-
Публикация артефактов в OSS. Войтиoss.sonatype.org/, нажмите
Staging Repositories
-> Введите свой groupId в строку поиска -> проверьте свой виджет и нажмите «Закрыть» -> нажмите «Отпустить» на панели вкладок. -
Сообщите сотрудникам Sonatype, чтобы закрыть вопрос. (только первый раз)
Справочный адрес:OSCHINA.net/Huang Yong/No…
Дождавшись одобрения, вы можете самостоятельно искать компоненты, выпущенные на центральном складе!
Однако все не так просто. Всегда есть такие ямы.
Список обнаруженных ям
Пара ключей, сгенерированная GPG
искаженное сообщение
Этот шаг фактически является шагом ввода пароля. Но поскольку это китайский язык, подсказка сообщения искажена.
Просто введите пароль в горизонтальную строку ниже, переместите курсор в нижнюю строку и нажмите Enter. Обратите внимание, что пароль нужно вводить дважды, пожалуйста, соблюдайте их согласованность.
Опубликуйте открытый ключ на сервере ключей PGP.
gpg: ошибка отправки на сервер ключей: сервер указал на сбой
Поскольку установлена более новая версия gpg,gpg --list-keys
отображается следующим образом:
pub rsa2048 2019-04-12 [SC] [有效至:2021-04-11]
9A1640F7A2551131612D51B12D83594B7B29D86A
uid [ 绝对 ] chengww <chengww5217@163.com>
sub rsa2048 2019-04-12 [E] [有效至:2021-04-11]
При публикации открытого ключа на сервере заполняется идентификатор открытого ключа.9A1640F7A2551131612D51B12D83594B7B29D86A
, отображаемый на терминале как:
gpg --keyserver hkp://subkeys.pgp.net --send-keys 9A1640F7A2551131612D51B12D83594B7B29D86A
...
gpg: 正在发送密钥 2D83594B7B29D86A 到 hkp://subkeys.pgp.net
gpg: 发送至公钥服务器失败:Server indicated a failure
gpg: 发送至公钥服务器失败:Server indicated a failure
Просто измените идентификатор открытого ключа с9A1640F7A2551131612D51B12D83594B7B29D86A
изменился на2D83594B7B29D86A
Только что:
gpg --keyserver hkp://subkeys.pgp.net --send-keys 2D83594B7B29D86A
настроить maven
Где настроен глобальный уровень settings.xml
settings.xml
Файлы обычно находятся в двух местах:
Глобальная конфигурация:${M2_HOME}/conf/settings.xml
Конфигурация пользователя:${user.home}/.m2/settings.xml
Если вы не уверены, пожалуйстаmvn -X
Проверить:
...
[DEBUG] Reading global settings from /usr/local/Cellar/maven/3.6.0/libexec/conf/settings.xml
[DEBUG] Reading user settings from /Users/chengww/.m2/settings.xml
...
оsetting.xml
Для соответствующих пояснений см.:woo woo Краткое описание.com/afraid/110's 897 ah 5…
Загрузить артефакты в OSS
Maven Sonatype Nexus return 401
401 ошибка, как правило, не вsetting.xml
Имя пользователя и пароль установлены (или имя пользователя и пароль неверны).
см. выше4. Настройте мавенв конфигурацииsetting.xml
.
gpg: signing failed: Inappropriate ioctl for device
Причина в том, что новая версия gpg не может открыть страницу ввода пароля в текущем терминале.
решить:
export GPG_TTY=$(tty)
экспортировать в текущий терминал (временный обходной путь)
или добавить в~/.bash_profile
,Потомsource ~/.bash_profile
gpg: signing failed: Screen or window too small
После выполнения вышеуказанной команды интерфейс ввода пароля по-прежнему не появляется в Терминале в IntelliJ IDEA, и сообщается об указанной выше ошибке.
В это время перейдите в терминал системы, перейдите в каталог проекта, а затем выполнитеmvn clean deploy -P release
заключительные замечания
Впереди долгий путь, и я надеюсь, что багов в мире не будет.