<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      個人開源項(xiàng)目如何上傳maven中央倉庫

      最近在寫一些開源項(xiàng)目,想把自己寫的東西放到maven中央倉庫,提供給更多的人使用。所以寫這一篇文章,記錄一下自研開源項(xiàng)目jar包上傳同步maven中央倉庫成功的整個過程,這其中還是有不少的坑的。

      • 首先需要在sonatype JIRA管理平臺完成新建項(xiàng)目的申請,審核通過之后才能進(jìn)行上傳jar的操作
      • 上傳過程首先肯定是要本地進(jìn)行打包,為保整項(xiàng)目信息完整性及上傳過程安全性,需要進(jìn)行特殊的操作,后文詳述
      • 本地打包之后首先傳入sonatype Nexus staging庫,這個庫只做臨時存儲,校驗(yàn)內(nèi)容完整、信息完整之后才能通過平臺操作轉(zhuǎn)移到release庫。
      • 開源項(xiàng)目jar轉(zhuǎn)到到release庫之后,實(shí)際上需要我們操作的內(nèi)容就全都完成了。sonatype maven庫的項(xiàng)目會自動同步到maven中央倉庫,這個過程會有延時,但延時很短。
      • 如果你使用國內(nèi)的maven中央倉庫的鏡像,與maven中央倉庫會有比較大的延時,請耐心等待同步之后,才可以使用。

      一、OSSRH賬號注冊于配置

      sonatype是由社區(qū)支持的開源項(xiàng)目托管服務(wù)(Open Source Project Repository Hosting,簡稱OSSRH),它免費(fèi),開發(fā)者可以將自己的開源項(xiàng)目生成的maven jar包托管到這里。當(dāng)將maven項(xiàng)目打包部署到這里之后,將自動同步到maven中央倉庫。 所以不管怎樣,我們都需要先注冊一個sonatype平臺賬號。

      1.1.賬號注冊

      注冊地址:https://issues.sonatype.org/secure/Signup!default.jspa ,按照下圖所示的內(nèi)容填寫自己的郵箱、全名、登陸用戶名username、登陸密碼passwprd,填寫驗(yàn)證碼即可完成注冊。友情提示:注冊過程中的密碼的強(qiáng)度要求非常高,填寫完成之后最好找個記事本把密碼先記下來,以面后續(xù)使用的時候忘記。另外,注冊完成之后,沒有任何“注冊成功”相關(guān)的提示,而是直接跳轉(zhuǎn)到登錄界面。

      使用我們剛剛注冊的用戶登陸進(jìn)去,登陸進(jìn)去之后會提示我們選擇語言:我習(xí)慣中文,當(dāng)然選中文;然后會提示我們選擇一個頭像;然后會提示我們要進(jìn)行什么工作,“瀏覽當(dāng)前項(xiàng)目即可”,這一步不重要。

      進(jìn)入JIRA管理平臺之后,點(diǎn)擊頂部導(dǎo)航欄的“新建”按鈕,然后在彈出的模態(tài)框中填寫信息,如下:

      • 項(xiàng)目和問題類型,一定要選對,按圖操作
      • 概要內(nèi)容填寫項(xiàng)目名稱即可,Group Id 根據(jù)項(xiàng)目的maven坐標(biāo)按需填寫,與maven項(xiàng)目pom配置一致。(這里需要注意:實(shí)際操作的時候,先把下文中的《1.2.域名認(rèn)證》看完,再做這部操作,存在對應(yīng)關(guān)系避免做錯)
      • 代碼上傳GitHub之后的項(xiàng)目URL、scm版本管理url(帶.git)依次如圖填寫。

      點(diǎn)擊新建即可,新建問題之后。實(shí)際上是發(fā)起了一個新建項(xiàng)目審核的審核工作流,會有人審核你所填寫的信息。

      1.2.域名認(rèn)證

      因?yàn)樯衔闹蠫roup ID我填寫的是我自己購買的域名,所以我需要證明這個域名是我的。證明的方式也很簡單,就是在我的域名購買的平臺,給域名增加一條txt的域名解析記錄,域名解析記錄的值會在JIRA平臺的流程審核結(jié)果記錄中給出,如下圖中的紅色框起來的內(nèi)容(本次新建項(xiàng)目申請的流水編號:OSSRH-83481)。

      如果沒有域名怎么辦?沒有域名你可以給Group Id填寫github的用戶域,如:com.github.<gihub用戶名>。填寫github用戶域,驗(yàn)證方式也不一樣,需要你在github中新建一個空的倉庫,倉庫的名稱是OSSRH-83481


      因?yàn)槲业挠蛎窃诎⒗镌瀑I的,所以我去阿里云為該域名添加一個TXT類型的解析記錄值。

      如果你不太確定TXT解析記錄值是否生效,可以通過windows CMD命令行,響應(yīng)如下的信息證明設(shè)置正確

      > nslookup -type=TXT 你的域名
      服務(wù)器:  dns.google
      Address:  8.8.8.8
      
      非權(quán)威應(yīng)答:
      你的域名       text =
      
              "OSSRH-83481"
      

      域名解析記錄值添加完成之后,回到sonatype JIRA管理平臺。在OSSRH-83481問題里面如下圖所示的位置,有一個Respose按鈕,點(diǎn)擊該按鈕證明你已經(jīng)完成了域名認(rèn)證操作。(因?yàn)槲沂遣僮魍瓿芍螅瑢懙倪@篇文章,所以這個按鈕已經(jīng)沒了,我模擬了一個)

      在整個的新建問題,項(xiàng)目流程審核過程中,你的注冊郵箱會不斷的收到sonatype JIRA管理平臺發(fā)出的郵件,提示你審核流程進(jìn)行到了什么階段。(這個審核過程非常迅速,應(yīng)該是機(jī)器人參與的審核,不是人為操作的,我用了5分鐘就完成了整個審核流程). 審核通過之后,你會看到如下的狀態(tài):已解決。

      二、安裝GnuPG軟件,并生成簽名

      新建項(xiàng)目審核通過之后,我們需要在開發(fā)PC上安裝GnuPG,因?yàn)槲覀兩蟼鞯絪onatype maven庫的所有文件都要經(jīng)過GnuPG進(jìn)行簽名,不經(jīng)過簽名的文件無法上傳成功。下載地址:https://gpg4win.org/thanks-for-download.html 。下載完成之后,傻瓜式的“下一步”“下一步”安裝即可。
      下載完成之后,我們打開windows的 CMD命令行,執(zhí)行如下命令。(注意:我的操作都是在CMD命令行下面執(zhí)行的,不要power shell ,不要git bash。我都試過,不是不行,是操作過程不一致。如果和我的操作過程不一致,可能導(dǎo)致你操作失敗!)

      gpg --gen-key
      

      下圖中紅色的部分是我填寫的內(nèi)容,我的名字、郵箱,以及一個O表示ok。會提示我們輸入一個Passphrase,填寫2遍。這個Passphrase就是一個密碼,一定要記住,下文會用到。

      GnuPG簽名的公鑰私鑰對生成完成之后,可以使用如下命令查看結(jié)果

      C:\Users\hanxt>gpg --list-key
      gpg: checking the trustdb
      gpg: marginals needed: 3  completes needed: 1  trust model: pgp
      gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
      gpg: next trustdb check due at 2024-08-09
      C:\Users\hanxt\AppData\Roaming\gnupg\pubring.kbx
      ------------------------------------------------
      pub   ed25519 2022-08-10 [SC] [expires: 2024-08-09]
            6B4F6A477A1BE195326AEAFA0EE41461FB92CD0B
      uid           [ultimate] HanXiaotong <hanxiaotongtong@163.com>
      sub   cv25519 2022-08-10 [E] [expires: 2024-08-09]
      

      密鑰對生成完成之后,將其公鑰發(fā)往sonatype認(rèn)可的keyserver,公鑰的字符串可以通過上文中的gpg --list-key查看到

      gpg --keyserver keyserver.ubuntu.com --send-keys 6B4F6A477A1BE195326AEAFA0EE41461FB92CD0B
      

      通過下面的命令行,可以校驗(yàn)公鑰的字符串發(fā)往服務(wù)器是否成功。

      gpg --keyserver keyserver.ubuntu.com --recv-keys 6B4F6A477A1BE195326AEAFA0EE41461FB92CD0B
      

      三、項(xiàng)目基礎(chǔ)配置

      完成上述的準(zhǔn)備工作,我們要對項(xiàng)目進(jìn)行打包了,打包工具我用的maven。需要檢查如下信息是否配置完整,如果沒有配置完整,請補(bǔ)充!缺少這些信息,maven項(xiàng)目后續(xù)將無法轉(zhuǎn)成release狀態(tài)。請根據(jù)自己項(xiàng)目的實(shí)際情況填寫。

      <groupId>com.zimug</groupId>
      <artifactId>zimug-monitor-threadpool</artifactId>
      <version>1.0</version>
      
      <name>${project.groupId}:${project.artifactId}</name>
      <description>spring boot starter  for thread pool monitor  </description>
      <url>https://github.com/hanxt/zimug-monitor-threadpool</url>
      

      license中填寫開源協(xié)議,scm填寫項(xiàng)目的git代碼倉庫地址,developer填寫開發(fā)人員的聯(lián)系方式。

        <licenses>
          <license>
            <name>BSD 3-Clause</name>
            <url>https://spdx.org/licenses/BSD-3-Clause.html</url>
          </license>
        </licenses>
        <scm>
          <connection>https://github.com/hanxt/zimug-monitor-threadpool.git</connection>
          <url>https://github.com/hanxt/zimug-monitor-threadpool</url>
        </scm>
        <developers>
          <developer>
            <name>zimug</name>
            <email>hanxiaotongtong@163.com</email>
            <roles>
              <role>Developer</role>
            </roles>
            <timezone>+8</timezone>
          </developer>
        </developers>
      

      四、maven打包配置

      只有在sonatype JIRA管理平臺上注冊的用戶,才能將開源項(xiàng)目 jar上傳到sonatype Nexus 倉庫。所以我們在上傳jar文件的時候,有必要告知服務(wù)器端我們的注冊用戶名及密碼。找到maven的setting.xml,添加如下配置:

      <servers>
          <server>
            <id>ossrh</id> 
            <username>sonatype注冊username</username>
            <password>sonatype注冊用戶的password</password>
          </server>
      </servers>
      

      setting.xml是針對maven進(jìn)行全局配置,除此之外還需要針對項(xiàng)目進(jìn)行配置pom.xml,首先配置遠(yuǎn)程倉庫的地址。需要注意的是這里的id與setting.xml中sever配置的id要一致。

      <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>
      

      這里有幾個需要注意的地方,

      • snapshotRepository是項(xiàng)目快照版本snapshot上傳地址,如果項(xiàng)目的版本號,如:1.0-SNAPSHOT,會上傳到這個倉庫。
      • 通常情況下repository是我們真正需要發(fā)布項(xiàng)目的遠(yuǎn)程倉庫上傳地址。需要注意的是我們這里寫的是staging暫存地址,而不是release版本的地址。(為什么這么做?后文詳述)
      • 另外需要注意的是,我們上傳的遠(yuǎn)程倉庫的地址是帶s01前綴的,而比較舊的文章中不帶s01前綴。這是因?yàn)榕f的sonatype maven倉庫已經(jīng)資源滿載了,所以官方新建了一個s01 maven倉庫,未來可能還會有s02、s03。 現(xiàn)階段在sonatype JIRA管理平臺上注冊的用戶,只能上傳這個新的s01倉庫。

      遠(yuǎn)程倉庫配置完成之后,我們還需要針對項(xiàng)目pom.xml增加一些打包配置,這些配置基本不用修改,原樣粘貼進(jìn)去即可。(其中maven-gpg-plugin插件會調(diào)用上文中安裝的GnuPG軟件,對文件進(jìn)行簽名)

      <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>
                <configuration>
                  <show>private</show>
                  <nohelp>true</nohelp>
                  <charset>UTF-8</charset>
                  <encoding>UTF-8</encoding>
                  <docencoding>UTF-8</docencoding>
                  <additionalparam>-Xdoclint:none</additionalparam>
                  <!-- TODO 臨時解決不規(guī)范的javadoc生成報錯,后面要規(guī)范化后把這行去掉 -->
                </configuration>
                <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.6</version>
                <executions>
                  <execution>
                    <phase>verify</phase>
                    <goals>
                      <goal>sign</goal>
                    </goals>
                  </execution>
                </executions>
              </plugin>
              <!--Compiler -->
              <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                  <source>1.8</source>
                  <target>1.8</target>
                  <fork>true</fork>
                  <verbose>true</verbose>
                  <encoding>UTF-8</encoding>
                </configuration>
              </plugin>
              <!--Release -->
              <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.1</version>
              </plugin>
            </plugins>
          </build>
        </profile>
      </profiles>
      

      在項(xiàng)目根目錄下,運(yùn)行下面的命令進(jìn)行maven打包操作(同時將項(xiàng)目jar deploy到遠(yuǎn)程maven倉庫),在打包運(yùn)行過程中,會彈出一個對話框提示你輸入密鑰(Passphrase),輸入上文《安裝GnuPG軟件,并生成簽名》章節(jié)中你填寫的Passphrase即可。

      mvn clean install deploy -P release 
      

      這里需要注意的是:

      • 不要使用IDEA的maven UI打包,IDEA的maven UI打包會報錯,無法執(zhí)行g(shù)pg命令。至于具體原因我也沒搞清楚,使用上文中的CMD命令行打包即可。
      • 使用mvn命令行打包的時候,需要注意你的JAVA_HOME環(huán)境變量的指向,是不是你期望的版本。我的電腦上安裝了多個版本的JDK,JAVA_HOME指向的是JDK11,而我希望打包的版本是JDK8。有可能造成混亂!
      • 如果maven depoly發(fā)布命令報401 authentication錯誤,是因?yàn)槟愕膍aven的setting.xml的server配置的用戶名密碼錯誤,或者setting.xml的server配置id與pom里面配置的repository id不一致導(dǎo)致的。也有可能你的電腦上maven 多個版本,項(xiàng)目使用的不是同一個setting.xml。
      • 如果報400錯誤,很有可能是你已經(jīng)上傳過的jar,同一個版本再次重復(fù)上傳了。

      五、CLOSE&RELEASE

      項(xiàng)目jar正確的上傳到nexus repository倉庫之后,我們還需要進(jìn)行進(jìn)一步的操作。這是因?yàn)槲覀兩蟼鞯膉ar放入了staging暫存庫里面,我們需要把它轉(zhuǎn)到release庫,這其中sonatype平臺會針對你的項(xiàng)目信息、jar文檔、源碼等內(nèi)容進(jìn)行完整性校驗(yàn),完整性校驗(yàn)不通過的項(xiàng)目是無法轉(zhuǎn)到release的,也就無法同步到maven中央倉庫。

      這些操作需要我們通過界面進(jìn)行,使用sonatype注冊用戶進(jìn)行登錄:https://s01.oss.sonatype.org/ 。如圖所示,如果我們項(xiàng)目打包上傳成功,會在Staging Repository里面看到一個Repository,將其勾選。點(diǎn)擊“CLOSE”按鈕之后,會自動進(jìn)行完整性校驗(yàn),校驗(yàn)結(jié)果可以雙擊勾選倉庫所在行進(jìn)行查看。(只要按照我上文中的內(nèi)容,將pom中的項(xiàng)目信息以及打包配置填寫完整,這里基本都會校驗(yàn)通過)

      CLOSE校驗(yàn)通過之后,刷新幾次頁面,Release按鈕就變成可點(diǎn)擊的狀態(tài)。此時點(diǎn)擊Release按鈕,就將項(xiàng)目jar從Staging暫存庫,轉(zhuǎn)移到了Release正式庫。實(shí)際上需要我們操作的內(nèi)容就全都完成了。

      sonatype maven庫的項(xiàng)目會自動同步到maven中央倉庫,通過maven坐標(biāo)引入使用即可,不要著急,這個過程可能會有一些延時。上傳之后可能一段時間內(nèi)無法在maven中央倉庫搜索到,但是使用maven坐標(biāo)下載jar包也沒有問題。

      一切都o(jì)k之后,最好回到sonatype JIRA管理平臺將“問題”關(guān)閉,這樣sonatype JIRA管理流程就全部完成了。

      歡迎關(guān)注我的公告號:字母哥雜談,回復(fù)003贈送作者專欄《docker修煉之道》的PDF版本,30余篇精品docker文章。字母哥博客:zimug.com

      posted @ 2022-08-11 14:02  字母哥博客  閱讀(3155)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 亚洲国产一区二区三区| 金川县| 国产不卡一区二区精品| 综合亚洲网| 东京热人妻丝袜无码AV一二三区观| 色偷偷亚洲女人天堂观看| 亚洲av无码国产在丝袜线观看| 国产精品护士| 亚洲综合久久精品哦夜夜嗨| 亚洲www永久成人网站| 久久精品久久黄色片看看| 色偷偷中文在线天堂中文| 亚洲av成人精品日韩一区| 九九热在线精品免费视频| 国产精品亚洲二区在线播放| 日韩中文字幕高清有码| 亚洲乱熟乱熟女一区二区| 国产成人精彩在线视频| 谷城县| 国产av熟女一区二区三区| 国产中文三级全黄| 猫咪AV成人永久网站在线观看 | 日韩精品一区二区三区视频 | 丰满少妇熟乱xxxxx视频| 高清在线一区二区三区视频| 欧美大屁股喷潮水xxxx| 中文字幕人妻日韩精品| 熟妇的味道hd中文字幕| 成人影片麻豆国产影片免费观看| 亚洲一区在线成人av| 日本东京热不卡一区二区| 国内自拍视频一区二区三区| 精品国产高清中文字幕| 97碰碰碰免费公开在线视频| 国产午夜精品福利91| 激情综合色五月六月婷婷| 伊伊人成亚洲综合人网香| 国产宅男宅女精品A片在线观看| 亚洲成人动漫av在线| 国产色无码专区在线观看| 久久精品国产只有精品96|