1. https://issues.sonatype.org/account を登録します
以下は登録が完了し、同時に提出された作業指示も完了したことを意味します
2. ここで重要なことは、goupId を認証する必要があり、ドメイン名レジストラーにアクセスして txt ファイルを分析し、これが自分のものであることを確認する必要があることです。
以下を通じてドメイン名情報を確認してください。ここには主に上記の作業指示書番号が含まれます。ここにはテキストの返信としてのリンク アドレスがあります。
3.GPG署名
GPG 署名を設定していない場合は、設定する必要があります。
まず GPG ツール
www.gnupg.org/download/をダウンロードします。
ダウンロードにはお金が必要ですが、お金がない場合は0元でダウンロードできます。winファイルをダウンロードするだけです。
ダウンロードして実行すると表示されます
この場合、コマンドラインを使用します。
いずれかを選択して
スクリプトを実行します
gpg --generate-key
生成後、いくつかの個人情報が入力され、
途中にパスフレーズが入力されるので、覚えておく必要があります。
次のコマンド ラインを使用して、公開キーの文字列が受信サーバーとの間で正常に送受信されたかどうかを確認できます。
送信
gpg --keyserver keyserver.ubuntu.com --send-keys FF490DBFEC050B856BB998716292A0B996ACB000
引き継ぐ
gpg --keyserver keyserver.ubuntu.com --recv-keys FF490DBFEC050B856BB998716292A0B996ACB000
4. 上記の情報に従って settings.xml および pom.xml ファイルを変更します。詳細については、添付ファイルを参照してください。
5.アップロードとリリース
mvn clean install deploy -P release
次のエラーが発生します
mvn ディレクトリの settings.xml を上書きするのを忘れていたことが判明し、次のリリースは正常であるように見えました。
6. 以前のアカウントのパスワードを使用して次のアドレスにログインし、リリース ステータスを表示します。
でも見つからないようです
7. 中央倉庫に行って、リリースしたコンポーネントを検索できます。
中央倉庫検索 Web サイト: http://search.maven.org/、送信された jar パッケージを受け取ることができます。
中国では、以下のアリの倉庫で検索できます
添付: settings.xml ファイル
<servers>
<server>
<id>ossrh</id>
<username>sonatype账号</username>
<password>sonatype密码</password>
</server>
</servers>
<profiles>
<profile>
<id>ossrh</id>
<properties>
<gpg.executable>gpg</gpg.executable>
<gpg.passphrase>自己passphrase密码</gpg.passphrase>
</properties>
</profile>
</profiles>
pom.xml ファイル
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nbcio</groupId>
<artifactId>autopoi-parent</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<name>autopoi-parent</name>
<url>http://www.nbcio.com</url>
<modules>
<module>autopoi</module>
<module>autopoi-web</module>
</modules>
<description> office 工具类 基于 poi</description>
<licenses>
<license>
<name>The Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<scm>
<connection>scm:git:https://gitee.com/nbacheng/autopoi.git</connection>
<developerConnection>scm:git:https://gitee.com/nbacheng/autopoi.git</developerConnection>
<url>https://gitee.com/nbacheng/autopoi</url>
</scm>
<developers>
<developer>
<name>nbacheng</name>
<email>[email protected]</email>
</developer>
</developers>
<properties>
<autopoi.version>1.0.0</autopoi.version>
<poi.version>5.0.0</poi.version>
<xerces.version>2.9.1</xerces.version>
<guava.version>29.0-jre</guava.version>
<commons-lang.version>3.10</commons-lang.version>
<slf4j.version>1.7.30</slf4j.version>
<spring.version>5.1.0.RELEASE</spring.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-full</artifactId>
<version>${poi.version}</version>
</dependency>
<!-- sax 读取时候用到的 -->
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>${xerces.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>${poi.version}</version>
</dependency>
<!-- excel背景
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>1.4</version>
</dependency>-->
<!-- google 工具类 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang.version}</version>
</dependency>
<!--日志 -->
<!-- slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
<scope>provided</scope>
</dependency>
<!--spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
<optional>true</optional>
</dependency>
<!--servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<!-- 模块版本 -->
<dependency>
<groupId>org.jeecgframework</groupId>
<artifactId>autopoi</artifactId>
<version>${autopoi.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<profiles>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 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>
<configuration>
<encoding>UTF-8</encoding>
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>
</execution>
</executions>
</plugin>
<!--Maven GPG插件用于使用以下配置对组件进行签名-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<!--Nexus Staging Maven插件是将组件部署到OSS并将其发布到Central Repository的推荐方法-->
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>
https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>
https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</project>
以下は公式ヘルプ情報です
配布管理と認証⚓︎
Nexus Staging Maven プラグインを使用して OSSRH Nexus Repository Manager にデプロイするように Maven を構成するには、次のように構成する必要があります。
注: 2021 年 2 月の時点で、すべての新しいプロジェクトは Nexus Repository Managerでプロビジョニングされ始めました。プロジェクトが Nexus Repository Managerでプロビジョニングされていない場合は、レガシー ホストの Nexus Repository Managerにログインする必要があります。
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
...
</plugins>
</build>
OSSRH は常に Sonatype Nexus Repository Manager の利用可能な最新バージョンを実行しているため、Nexus Staging Maven プラグインの最新バージョンを使用することが最善です。
あるいは、デフォルトの動作である Maven デプロイ プラグインを使用している場合は、完全な distributionManagement
セクションを追加する必要があります。
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
settings.xml
上記の設定では、通常は に配置されている Maven ファイルから、OSSRH にデプロイするユーザー アカウントの詳細を取得します ~/.m2
。認証に関する最小限の設定は次のとおりです。
<settings>
<servers>
<server>
<id>ossrh</id>
<username>your-jira-id</username>
<password>your-jira-pwd</password>
</server>
</servers>
</settings>
id
のサーバー要素内の要素が、 および 要素 内の要素 とどのようsettings.xml
に同一であるか 、また Nexus Staging Maven プラグインの設定と同じであることに注意してください。 id
snapshotRepository
repository
serverId
Javadoc とソースの添付ファイル⚓︎
Javadoc およびソース jar ファイルを生成するには、Javadoc およびソース Maven プラグインを構成する必要があります。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
GPG 署名付きコンポーネント⚓︎
Maven GPG プラグインは、次の構成でコンポーネントに署名するために使用されます。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
これは、インストールされている gpg コマンドと、settings.xml などから入手できる GPG 資格情報に依存します。さらに、gpg とは異なる場合に備えて gpg コマンドを設定できます。これは、一部のオペレーティング システムでは一般的なシナリオです。
<settings>
<profiles>
<profile>
<id>ossrh</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<gpg.executable>gpg2</gpg.executable>
<gpg.passphrase>the_pass_phrase</gpg.passphrase>
</properties>
</profile>
</profiles>
</settings>
複数のキーがある場合、ローカル GPG は最初にリストされている署名キー ( gpg --list-signatures
) を使用します。特定のキーを使用する必要がある場合は、セクション内に GPG キーの詳細を追加し <configuration>
、ローカルを使用して settings.xml
署名を介してパスフレーズを検出できます。キー名。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<keyname>${gpg.keyname}</keyname>
<passphraseServerId>${gpg.keyname}</passphraseServerId>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
パスフレーズの入力を求められたり、 gpg: signing failed: No such file or directory
エラーが発生したりしていますか?
gpg
バージョン 2.1 以降を使用しているためにこの問題が発生している可能性があります 。実行中に gpg --version
バージョン 2.1 以降を実行していることが示される場合は、Maven GPG プラグインの構成を変更して を追加する必要があります gpgArguments
。上記の例を基にすると、次のようになります。
<configuration>
<keyname>${gpg.keyname}</keyname>
<passphraseServerId>${gpg.keyname}</passphraseServerId>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
ヒント
以下の例では、署名 keyid の最後の 8 文字を 16 進形式で使用する必要がある場合があります。これらの文字は、次のコマンドを使用して見つけることができます gpg --list-signatures --keyid-format 0xshort
。
$ gpg --list-signatures --keyid-format 0xshort
/home/mylocaluser/.gnupg/pubring.kbx
---------------------------------
pub rsa3072/0x3ABDEC12 2021-01-27 [SC] [expires: 2023-01-27]
74524542545300A398653AB5242798823ABDEC12
uid [ultimate] Other Name <[email protected]>
sig 3 0x3ABDEC12 2021-01-27 Other Name <[email protected]>
sub rsa3072 2021-01-27 [E] [expires: 2023-01-27]
sig 0x3ABDEC12 2021-01-27 Julian Alarcon <[email protected]>
pub rsa3072/0x0ABA0F98 2021-06-23 [SC] [expires: 2022-03-21]
CA925CD6C9E8D064FF05B4728190C4130ABA0F98
uid [ultimate] Central Repo Test <[email protected]>
sig 3 0x0ABA0F98 2021-06-24 Central Repo Test <[email protected]>
sub rsa3072/0x7C17C93B 2021-06-23 [E] [expires: 2023-06-23]
sig 0x0ABA0F98 2021-06-23 Central Repo Test <[email protected]>
sig 3で始まる行には、 0x3ABDEC12
として渡す必要がある 16 進形式の署名短い keyid が 表示 されます${gpg.keyname}
。
GPG のセットアップと構成についてさらにヘルプが必要な場合は、 詳細な手順をお読みください。
デプロイおよびリリース用の Nexus ステージング Maven プラグイン⚓︎
Nexus Staging Maven プラグインは、コンポーネントを OSSRH にデプロイし、中央リポジトリにリリースする場合に推奨される方法です。これを構成するには、プラグインを Maven pom.xml に追加するだけです。
<build>
<plugins>
...
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
ご使用のバージョンがリリース バージョン (-SNAPSHOT で終わらない) で、この設定が適切に行われている場合は、通常の次のコマンドを使用して、OSSRH へのデプロイメントと中央リポジトリへの自動リリースを実行できます。
mvn clean deploy
autoReleaseAfterClose プロパティを false に設定すると、Nexus Repository Manager でステージング リポジトリを手動で検査し、後でステージング リポジトリのリリースをトリガーできます。
mvn nexus-staging:release
何か問題が発生した場合は、次のようにしてステージング リポジトリを削除できます。
mvn nexus-staging:drop
Nexus Staging Maven プラグインの詳細については、Repository Manager 2ドキュメント の 「ステージング リリース」を参照してください 。
非推奨の oss-parent ⚓︎
以前は、すべてのプラグイン設定とその他のセットアップは、最新の座標を持つ Maven 親 POM によって管理されていました org.sonatype.oss:oss-parent:9
。このプロジェクトは SCM、URL、その他の詳細を漏洩したため、その使用は推奨されません。プロジェクトのメンテナンスは停止されており、Maven バージョンや Java バージョンなどの最新のツールでは動作しなくなりました。必要に応じて、同様の方法で独自の組織レベルの POM を管理してください。
プロフィールの使用⚓︎
javadoc とソース jar の生成、および GPG によるコンポーネントへの署名はかなり時間のかかるプロセスであるため、通常、これらの実行は通常のビルド構成から分離され、プロファイルに移動されます。このプロファイルは、プロファイルをアクティブ化することによって展開が実行されるときに使用されます。
<profiles>
<profile>
<id>release</id>
<build>
...
javadoc, source and gpg plugin from above
...
</build>
</profile>
</profiles>
スナップショット展開の実行⚓︎
スナップショット展開は、バージョンが で終わる場合に実行されます -SNAPSHOT
。スナップショット展開を実行するときに要件を満たす必要はなく、単に実行するだけで済みます。
mvn clean deploy
あなたのプロジェクトで。
SNAPSHOT バージョンは中央リポジトリに同期されません。ユーザーが SNAPSHOT バージョンを使用できるようにするには、スナップショット リポジトリを Nexus Repository Manager、settings.xml、または pom.xml に追加する必要があります。正常にデプロイされた SNAPSHOT バージョンは、/repositories/snapshots のインデックスに表示されます。
リリース展開の実行⚓︎
リリース展開を実行するには、 version
リリース バージョンを使用するようにすべての POM ファイルを編集する必要があります。これは、 -SNAPSHOT
プラグインと依存関係の宣言ではスナップショット バージョンを使用できないことを意味します。これにより、他のリリースされたコンポーネントのみに依存することが保証されます。理想的には、それらはすべて中央リポジトリで利用可能です。これにより、ユーザーはコンポーネントと推移的な依存関係を中央リポジトリから取得できるようになります。
プロジェクトのバージョンの変更、およびマルチモジュール設定の親参照は、手動で、または Maven バージョン プラグインを使用して実行できます。
mvn versions:set -DnewVersion=1.2.3
release
すべてのバージョンを更新し、デプロイメントなしでビルドが成功することを確認したら、次のプロファイルを使用してデプロイメントを実行できます。
mvn clean deploy -P release
このプロセスは、SCM システムのワークフローから完全に独立しています。セントラル リポジトリの特定のバージョンが SCM システムの特定のリビジョンに対応していることを確認する場合 (これが推奨事項です)、次のようなフローでコミットを手動で実行できます。
- 開発、開発、開発
- 未処理の変更をコミットします
- ビルドパスを確認する
- バージョンをリリースバージョンに更新します
- リリースバージョンをコミットする
- デプロイメントの実行
- バージョンを次のスナップショット バージョンに更新します
- 新しいスナップショット バージョンをコミットする
- 現像、現像、現像、リンスを繰り返す
または、CI サーバー上で実行される構成を含む任意のスクリプトを使用して自動化することも、以下に説明する Maven リリース プラグインを使用することもできます。
Maven リリース プラグインを使用したリリース デプロイメントの実行⚓︎
Maven リリース プラグイン を使用すると、Maven POM ファイルへの変更、健全性チェック、必要な SCM 操作、および実際のデプロイメントの実行を自動化できます。
release
Maven リリース プラグインの設定には、独自のプロファイルを使用しているため、Maven Super POM の一部であるリリース プロファイルの無効化を含める必要があり、プロファイルのアクティブ化とともにデプロイ目標を指定する必要があります。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<useReleaseProfile>false</useReleaseProfile>
<releaseProfiles>release</releaseProfiles>
<goals>deploy</goals>
</configuration>
</plugin>
SCM 接続が正しく構成されていれば、OSSRH へのリリース展開を実行できます。
mvn release:clean release:prepare
バージョンとタグのプロンプトに答えてから、
mvn release:perform
autoReleaseAfterClose を true に設定した Nexus Staging Maven プラグインの使用により、この実行は一度に OSSRH にデプロイされ、中央リポジトリにリリースされます。
中央リポジトリへのデプロイメントの手動リリース⚓︎
false に設定された autoReleaseAfterClose を使用している場合、またはデフォルトの Maven デプロイ プラグインを使用している場合は、 デプロイされたアーティファクトを手動で検査し、場合によってはリリースできます。
あるいは、Nexus Staging Maven プラグインを使用してデプロイし、デプロイが成功した場合は、コマンド ラインで直接リポジトリを解放できます。デプロイメントの直後、ターゲット ディレクトリ内のプロパティ ファイルには必要な情報がすべて含まれており、次のコマンドを使用してステージング リポジトリを簡単にリリースできます。
mvn nexus-staging:release
Maven リリース プラグインを使用して行われるリリースの一部としてデプロイメントを実行している場合、デプロイメントはターゲット/チェックアウトにチェックアウトされたバージョン管理システムのタグから行われるため、そこから Nexus Staging プラグインを実行する必要があります。
mvn release:perform
...
cd target/checkout
mvn nexus-staging:release
デプロイ後にゴール実行として追加することで、リリース プラグインを使用してリリース デプロイメントの一部としてこのゴールを自動的に実行するように構成できます。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<goals>deploy nexus-staging:release</goals>
...