发布jar包到公有maven库详解

初始步骤要求

Step 1: 安装 JDK, Maven, 建 Github 账号等等.

Step 2: 如果还没有,先建 GitHub 账号.

Step 3: 建立新的 Github 库.

Step 4: 为你的GitHub账号 新增 SSH 密钥

Step 5: 向GitHub推送代码

Step 6: 注册 Sonatype Jira 账号

Step 7: 为新托管项目建一个 Jira issue.搞个简单请求点这里

sonatype-new-project-jira-request

Step 8:为你的操作系统 安装 GNU PG. 确认如下:

C:\Users\Nadeem>gpg --version

gpg (GnuPG) 2.1.15
libgcrypt 1.7.3
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 

This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: C:/Users/Nadeem/AppData/Roaming/gnupg

Supported algorithms:

Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
 CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

Step 9:  生成键对

C:\Users\Nadeem>gpg --full -gen -key

gpg (GnuPG) 2.1.15; Copyright (C) 2016 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

gpg: keybox 'C:/Users/Nadeem/AppData/Roaming/gnupg/pubring.kbx' created

Please select what kind of key you want:
 (1) RSA and RSA (default)
 (2) DSA and Elgamal
 (3) DSA (sign only)
 (4) RSA (sign only)
Your selection? 1

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.

 0 = key does not expire
   = key expires in n days
 w = key expires in n weeks
 m = key expires in n months
 y = key expires in n years

Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: Nadeem Mohammad
Email address: [email protected]
Comment:

You selected this USER-ID:

 "Nadeem Mohammad "

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o

We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the

disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy.

We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the

disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy.

gpg: C:/Users/Nadeem/AppData/Roaming/gnupg/trustdb.gpg: trustdb created
gpg: key 27835B3BD2A2061F marked as ultimately trusted
gpg: directory 'C:/Users/Nadeem/AppData/Roaming/gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as 'C:/Users/Nadeem/AppData/Roaming/gnupg/openpgp-revocs.d\5694AA563793429557F1727835B3BD2A223A.rev'

public and secret key created and signed.

pub   rsa2048 2016-08-29 [SC]

 5694AA563793429557F1727835B3BD2A223A

uid                      Nadeem Mohammad 

sub   rsa2048 2016-08-29 [E]

C:\Users\Nadeem>

Step 10: 输入密码.

Notes_1578627618558.png

发布步骤

Step 1:增加发布管理 distributed management 部分到 pom.xml.

增加发布插件 deploy plugin.


    maven-deploy-plugin
    2.8.2
    
        
            default-deploy
            deploy
            
                deploy
            
        
    

这是如何增加发布管理项的(distribution management)到 POM:


    
        ossrh
        https://oss.sonatype.org/content/repositories/snapshots
    
    
        ossrh
        https://oss.sonatype.org/service/local/staging/deploy/maven2/
    

Step 2:增加 ossrh 服务器到你的maven配置文件 ~/$M2_REPO/settings.xml.

 
    
        
            ossrh
            your-jira-id
            your-jira-pwd
        
    
注: ID 与 settings.xml 中的 servers/server ID 要相对应, snapshot库与 POM 文件里的库也要对应.

Step 3:在pom里增加代码管理部分SCM.


    scm:git:git://github.com/dexecutor/dependent-tasks-executor.git
    scm:git:[email protected]:yujiaao/spring-mvc-source-analysis.git
    https://github.com/dexecutor/dependent-tasks-executor
    HEAD

Step 4: 增加 Maven release 插件.


    org.apache.maven.plugins
    maven-release-plugin
    2.5.3
    
        true
        false
        forked-path
        -Dgpg.passphrase=${gpg.passphrase}
    
    
        
            org.apache.maven.scm
            maven-scm-provider-gitexe
            1.9.5
        
    

把 GPG 密码放到Maven settings.xml对应的profile里.


    
        
            ossrh
            
                true
            

            
                [your_gpg_passphrase]
            
        
    

增加 Nexus staging Maven 插件.


    org.sonatype.plugins
    nexus-staging-maven-plugin
    1.6.7
    true
    
        ossrh
        https://oss.sonatype.org/
        true
    

Step 5: 增加源码和 javadoc 插件.


    org.apache.maven.plugins
    maven-source-plugin
    3.0.1
    
        
            attach-sources
            
                jar
            
        
    

    org.apache.maven.plugins
    maven-source-plugin
    2.10.4
    
        UTF-8
    
    
        
            attach-javadoc
            
        
    

Step 6: 配置发布版本的项目签名.


    
    
        release-sign-artifacts
        
            
                performRelease
                true
            
        
        
            
                
                    org.apache.maven.plugins
                    maven-gpg-plugin
                    1.6
                    
                        
                            sign-artifacts
                            verify
                            
                                sign
                            
                        
                    
                
            
        
    

Step 7: 发布 GPG 密钥对到 GPG 服务器:

gpg –keyserver [KEY_SERVER] –send-key [KEY_ID]

The KEY_ID in the above case is 5694AA563793429557F1727835B3BD2A223A.

Some of the key servers are: 

pool.sks-keyservers.net
gnupg.net:11371
keys.pgp.net
surfnet.nl
mit.edu

Step 8: 发布正式版本!

mvn clean

mvn release:prepare

mvn release:perform

Step 9: 推送标签 tag 和代码到远程库.

git push–tags

git push origin master

Step 10: 验证sonatype库.

verify-sonatype-repo.png

Step 11: 更新 Sonatype 的 Jira 问题项(ticket).

update-sonatpe-jira-about-release.png

详细配置可查看这个pom.xml文件例子。

搞错了怎么办

Step 1: 取消本次发布:

git reset –hard HEAD~1 (You may have to do it a second time, depending upon when the error occurred.)

git reset –hard HEAD~1

Step 2: 删除标签tag.

git tag -d tagName

git push origin :refs/tags/tagName

你可能感兴趣的:(maven,jar,repository,nexus,git)