maven發布jar到中央倉庫


maven發布jar到中央倉庫

一、注冊JIRA帳號

​ 地址:https://issues.sonatype.org/secure/Dashboard.jspa

注意:密碼需要至少8位,同時有大小寫字母,特殊字符和數字

二、創建issue

 

 

 

三、等待審核

域名問題,需要groupId的域名部分屬於自己的域名,在這里使用com.github.duojin

根據一系列對話的指引解決所有問題,地址https://issues.sonatype.org/browse/OSSRH-53957

 

 

 

 

 

四、gpg 環境安裝

gpg的主要作用是生成密鑰對,會用於后續我們組件發布的校驗。

1、下載地址: https://www.gnupg.org/download/, 安裝時會附帶安裝UI程序kleopatra

2、在安裝完成后,運行kleopatra程序,新建密鑰對

image-20191218230105776

3、導出證書 發布證書

 五、maven 全局配置

默認的maven配置文件為用戶目錄下的 .m2/setting.xml或自己配置后的目錄文件

添加服務器驗證

<server>
    <id>sonatype_releases</id>
    <username>your user name</username>
    <password>your password</password>
</server>
<server>
    <id>sonatype_snapshots</id>
    <username>your user name</username>
    <password>your password</password>
</server>
    • 用戶名和密碼是第一步中注冊的JIRA的

    • 配置gpg驗證命令

      <settings>
        <profiles>
          <profile>
            <id>gpg</id>
            <properties>
              <gpg.executable>gpg</gpg.executable>
              <gpg.passphrase>your password</gpg.passphrase>
            </properties>
          </profile>
        </profiles>
        <activeProfiles>
          <activeProfile>gpg</activeProfile>
        </activeProfiles>
      </settings>

      六、項目中的maven配置

      • 在項目的pom.xml文件中,配置相應的開源協議、倉庫信息、開發人員信息和發布配置
        <!-- 開源簽名證書 -->
        <licenses>
            <license>
                <name>The Apache Software License, Version 2.0</name>
                <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
                <distribution>repo</distribution>
            </license>
        </licenses>
        <!-- 倉庫信息 -->
        <scm>
            <connection>scm:git@github.com:duojin/sms-spring-boot-project.git</connection>
            <developerConnection>scm:git@github.com:duojin/sms-spring-boot-project.git
            </developerConnection>
            <url>https://github.com/duojin/sms-spring-boot-project</url>
        </scm>
        <!-- 開發人員信息 -->
        <developers>
            <developer>
                <name>ajoe.Liu</name>
                <email>87893689@qq.com</email>
                <organization>https://github.com/duojin</organization>
                <timezone>+8</timezone>
            </developer>
        </developers>
        <!-- 發布管理信息 -->
        <distributionManagement>
            <repository>
                <!-- 這里的id必須要和全局配置中的release id 一致 -->
                <id>sonatype_releases</id>
                <name>Nexus Release Repository</name>
                <!-- 這里就是在創建issue成功后,對方回復的release發布地址-->
                <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
            </repository>
            <snapshotRepository>
                <!-- 這里的id必須要和全局配置中的snapshot id 一致 -->
                <id>sonatype_snapshots</id>
                <name>Nexus Snapshot Repository</name>
                <!-- 這里就是在創建issue成功后,對方回復的snapshot發布地址-->
                <url>https://oss.sonatype.org/content/repositories/snapshots</url>
            </snapshotRepository>
        </distributionManagement>

        發布到maven中央倉庫會要求我們在上傳jar到同時,必須同步發布對應到Javadoc、source、asc(利用gpg生成到校驗),所以需要在maven中添加以下構建插件

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
                <!-- -->
                <plugin>
                    <groupId>org.sonatype.plugins</groupId>
                    <artifactId>nexus-staging-maven-plugin</artifactId>
                    <version>1.6.7</version>
                    <extensions>true</extensions>
                    <configuration>
                        <!-- 這里的id必須要和全局配置中的release id 一致 -->
                        <serverId>sonatype_releases</serverId>
                        <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                        <!-- 如果希望發布后自動執行close和release操作,此處可以調整為true -->
                        <autoReleaseAfterClose>false</autoReleaseAfterClose>
                    </configuration>
                </plugin>
                <!-- 生成java source.jar -->
                <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>
                    <configuration>
                        <aggregate>true</aggregate>
                        <charset>UTF-8</charset>
                        <encoding>UTF-8</encoding>
                        <docencoding>UTF-8</docencoding>
                        <!-- -Xdoclint:none maven忽視javadoc過程中警告和錯誤 -->
                        <additionalparam>-Xdoclint:none</additionalparam>
                    </configuration>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <!-- 生成asc 校驗文件 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <version>1.5</version>
                    <executions>
                        <execution>
                            <!-- 必須和配置中的gpg校驗id一致 -->
                            <id>gpg</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>sign</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

 

七、打包發布jar到中央倉庫

  • 執行以下命令進行發布(如果 pom.xml 中 autoReleaseAfterClose 的值為true,則腳本會自動完成在平台上close、release的操作,至此你將成功發布了,否則我們繼續查看第3步)

測試打包

mvn clean package

 發布

mvn clean release

 

八、驗證

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM