激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解如何將JAR包發布到Maven中央倉庫

詳解如何將JAR包發布到Maven中央倉庫

2021-07-02 14:39Fundebug Java教程

這篇文章主要介紹了詳解如何將JAR包發布到Maven中央倉庫,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

將jar包發布到maven中央倉庫(maven central repository),這樣所有的java開發者都可以使用maven直接導入依賴,例如fundebug-java

?
1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/com.fundebug/fundebug-java -->
<dependency>
  <groupid>com.fundebug</groupid>
  <artifactid>fundebug-java</artifactid>
  <version>0.2.0</version>
</dependency>

但是,maven中央倉庫并不支持直接發布jar包。我們需要將jar包發布到一些指定的第三方maven倉庫,然后該倉庫再將jar包同步到maven中央倉庫。

其中,最"簡單"的方式是通過sonatype ossrh倉庫來發布jar包。接下來,我會介紹如何將jar包發布到sonatype ossrh。

本教程所使用的系統配置如下:

  • os:macos 10.14.2
  • jdk:1.8.0_192
  • maven:3.5.4

1. 注冊jira賬號

jira是一個項目管理服務,類似于國內的teambition。sonatype通過jira來管理ossrh倉庫。

注冊地址:https://issues.sonatype.org/secure/signup!default.jspa

需要填寫email, full name, username以及password,其中username與password后面的步驟需要用到,請記下來。

2. 創建issue

通過在jira上創建issue來申請發布新的jar包,sonatype的工作人員會進行審核,審核不算嚴格,一般按照要求填寫不會有問題。

創建鏈接:https://issues.sonatype.org/secure/createissue.jspa?issuetype=21&pid=10134

詳解如何將JAR包發布到Maven中央倉庫

創建issue的時候需要填寫下面這些信息:

  • summary
  • description
  • group id
  • project url
  • scm url

大家可以參考我申請發布fundebug-javafundebug-spring時所填寫的內容:OSSRH-45238

由于時差,前一天創建issue,第二天早上才會有回應。當issue的status變為resolved,我們就可以進行下一步操作了。

3. 安裝并配置gpg

發布到maven倉庫中的所有文件都要使用gpg簽名,以保障完整性。因此,我們需要在本地安裝并配置gpg。

安裝gpg

macbook安裝gpg非常簡單,下載并安裝gpg suite即可。

生成gpg密鑰對

?
1
gpg --gen-key

生成密鑰時將需要輸入name、email以及password。password在之后的步驟需要用到,請記下來。

上傳gpg公鑰

將公鑰上傳到公共的密鑰服務器,這樣其他人才可以通過公鑰來驗證jar包的完整性。

?
1
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys cab4165c69b699d989d2a62bd74a11d3f9f41243

其中cab4165c69b699d989d2a62bd74a11d3f9f41243為密鑰的id,可以通過gpg --list-keys命令查看

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
gpg --list-keys
 
/users/kiwenlau/.gnupg/pubring.kbx
----------------------------------
pub  dsa2048 2010-08-19 [sc] [expires: 2020-06-15]
   85e38f69046b44c1ec9fb07b76d78f0500d026c4
uid      [ unknown] gpgtools team <team@gpgtools.org>
sub  elg2048 2010-08-19 [e] [expires: 2020-06-15]
sub  rsa4096 2014-04-08 [s] [expires: 2024-01-02]
 
pub  rsa2048 2019-01-03 [sc] [expires: 2021-01-02]
   cab4165c69b699d989d2a62bd74a11d3f9f41243
uid      [ultimate] kiwenlau <kiwenlau@gmail.com>
sub  rsa2048 2019-01-03 [e] [expires: 2021-01-02]

4. 配置maven的setting.xml

[setting.xml]()為maven的全局配置文件,在macbook上的位置為/usr/local/cellar/maven/3.5.4/libexec/conf/settings.xml,我們需要將第1步配置的username和password添加到<servers></servers>標簽中,這樣我們才能將jar包部署到sonatype ossrh倉庫:

?
1
2
3
4
5
6
7
<servers>
    <server>
        <id>ossrh</id>
        <username>fundebug</username>
        <password>passsword</password>
    </server>
</servers>

5. 配置項目的pom.xml

pom.xml挺長的。根據sonatype ossrh的要求,以下信息都必須配置:

  • supply javadoc and sources
  • sign files with gpg/pgp
  • sufficient metadata
    • correct coordinates
    • project name, description and url
    • license information
    • developer information
    • scm information

配置時參考我的pom.xml,根據需要修改即可。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<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.fundebug</groupid>
  <artifactid>fundebug-java-notifier</artifactid>
  <version>0.2.0</version>
  <packaging>pom</packaging>
  <name>fundebug-java-notifier</name>
  <url>https://github.com/fundebug/fundebug-java-notifier</url>
  <description>capture java and spring exceptions automatically</description>
  <licenses>
    <license>
      <name>server side public license</name>
      <url>https://www.mongodb.com/licensing/server-side-public-license</url>
      <distribution>repo</distribution>
      <comments>a not business-friendly oss license</comments>
    </license>
  </licenses>
  <scm>
    <url>https://github.com/fundebug/fundebug-java-notifier</url>
    <connection>https://github.com/fundebug/fundebug-java-notifier.git</connection>
  </scm>
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.deploy.skip>true</maven.deploy.skip>
  </properties>
  <developers>
    <developer>
      <name>kiwenlau</name>
      <id>kiwenlau</id>
      <email>kiwenlau@gmail.com</email>
      <roles>
        <role>developer</role>
      </roles>
      <timezone>+8</timezone>
    </developer>
  </developers>
  <profiles>
    <profile>
      <id>default</id>
      <activation>
        <activebydefault>true</activebydefault>
      </activation>
      <build>
        <plugins>
          <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>
          <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>
          <plugin>
            <groupid>org.apache.maven.plugins</groupid>
            <artifactid>maven-gpg-plugin</artifactid>
            <version>1.6</version>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      <distributionmanagement>
        <snapshotrepository>
          <id>ossrh</id>
          <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
        </snapshotrepository>
        <repository>
          <id>ossrh</id>
          <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
      </distributionmanagement>
    </profile>
  </profiles>
  <modules>
    <module>fundebug-java</module>
    <module>fundebug-spring</module>
    <module>examples/hello-world</module>
    <module>examples/spring-rest-api</module>
  </modules>
</project>

6. 發布jar包

執行mvn clean deploy處理,即可將jar包發布到sonatype ossrh倉庫。

?
1
mvn clean deploy -projects fundebug-java,fundebug-spring

我們的項目fundebug-java-notifier含有多個模塊,僅需部署fundebug-java與fundebug-spring,因此使用-projects選項來指定。

第一次執行mvn clean deploy命令時,需要輸入gpg密鑰的密碼。

mvn clean deploy命令執行成功的輸出是這樣的(部分日志):

?
1
2
3
4
5
6
7
8
9
10
11
[info] ------------------------------------------------------------------------
[info] reactor summary:
[info]
[info] fundebug-java 0.2.0 ................................ success [ 22.183 s]
[info] fundebug-spring 0.2.0 .............................. success [ 16.383 s]
[info] ------------------------------------------------------------------------
[info] build success
[info] ------------------------------------------------------------------------
[info] total time: 38.728 s
[info] finished at: 2019-01-12t20:10:16+08:00
[info] ------------------------------------------------------------------------

7. close并release

mvn clean deploy命令執行成功,使用jira賬號登陸:https://oss.sonatype.org/#stagingrepositories,就可以看到你所發布的jar包了:

詳解如何將JAR包發布到Maven中央倉庫

選中對于的repository之后,點擊箭頭所指的close,close時會檢查發布的構件是否符合要求。若符合要求,則close成功,成功之后點擊箭頭所指的release,即可正式將jar包發布到sonatype ossrh倉庫。

release成功大概2個小時之后,該構件就會同步到maven中央倉庫:

詳解如何將JAR包發布到Maven中央倉庫

參考

guide to uploading artifacts to the central repository
ossrh guide
maven入門教程

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://segmentfault.com/a/1190000017877798

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 一级网站片 | 羞羞的动漫在线观看 | 性明星video另类hd | 激情宗合| 国产一区二区三区在线免费观看 | 久久精品欧美电影 | 久久午夜免费视频 | 中文字幕亚洲情99在线 | 色婷婷久久久 | 99re热视频这里只精品 | 99久99| 爱爱视频天天干 | 一区二区三区欧美在线观看 | 精品亚洲夜色av98在线观看 | 色综合久久久久久久久久久 | 亚洲成人精品久久久 | 在线免费观看毛片视频 | 毛片大全 | 天堂成人国产精品一区 | 欧美爱爱视频 | 孕妇体内谢精满日本电影 | 日本在线不卡一区二区三区 | 艹逼视频网 | 日韩欧美电影在线观看 | 久久亚洲线观看视频 | 国产69精品久久99不卡免费版 | 精品一区二区三区中文字幕老牛 | 国产精品久久久久久久久久 | 黄色美女网站免费看 | 国产精品免费成人 | av日韩在线免费观看 | 色婷婷久久久 | 免费国产在线视频 | 青草av.久久免费一区 | 免费观看一区二区三区视频 | 久久久一区二区三区视频 | 伊久在线 | 在线看一级片 | 视频一区二区中文字幕 | 久久久成人精品视频 | 久久99精品久久久久久秒播蜜臀 |