1. 程式人生 > >釋出一個自己的jar包給全球人使用

釋出一個自己的jar包給全球人使用

目錄

  • 專案準備
  • sonatype
    • 註冊
    • 申請sonatype工單
  • gpg配置
  • 專案配置
    • 依賴oss-parent
    • 自定義配置
      • pom配置
      • 全域性settings配置
  • 釋出
  • 驗證

maven 專案對於我們開發大大減少了我們的開始時間,提高了開發效率,那麼如何開發出屬於自己的一套maven專案了。今天來看看如何上傳maven專案到中央倉庫

專案準備

  • 首先我們得建立一個maven專案;當然這裡只是為了而是釋出maven專案。沒有maven的新建一個就行。有了自己maven專案,在這裡就可以直接拿maven專案做測試。
    。至於專案的配置方面後面再說

sonatype

  • Sonatype是一個通過Nexus對開源專案提供託管服務的網站。你可以通過它釋出專案的快照(snapshot)或者穩定版本(release)到Maven中央倉庫。我們只需要註冊一個Sonatype的賬號,新建一個issue,然後在專案的pom檔案中進行配置即可。

註冊

  • 這裡註冊的時候需要注意一下,使用者名稱最好不要出現中文,這裡中文註冊沒問題,但是後面釋出到中央倉庫的時候會有麻煩。所以強烈建議這裡用英文註冊使用者名稱。如果非要用中文註冊也可以,只是在後面建立工單的時候需要註明一下新的username

申請sonatype工單

  • 註冊完成後進入首頁開始建立。其中我們的groupId有一定的講究。我們得擁有域的所有權。因為我們知道groupId預設是:com/org/cn + 域名 + 公司名 。比如我填寫得是
    com.github.zxhTom,那麼sonatype會要求你擁有github.com的所有權。因為github是開放性網站。另外zxhTom是我再github上的註冊名。所有github.com/zxhTom這個地址就是屬於我,所喲這樣寫就會驗證通過。如果你有自己的域名zxhTom.com 。那麼你的groupId就是是com.zxhTom.***

  • 註冊完成之後系統不會自動跳轉到我們新建的工單上。我們可以這樣找到我們的工單

  • 到這裡我們的工單就申請完成了。如果你的條件和我上面說的一樣。那麼1~3小時稽核就會通過的。現在我們就等著稽核通過。這段時間我們可以進行下面的pgp和其他的配置
    我這裡稽核通過不到10分鐘就通過了

gpg配置

官網下載
本部落格原裝版本下載

  • 安裝最後我們最好也勾選一下安裝gpg2.就在安裝的介面上就可以勾選
  • 安裝後我們開啟cmd檢視安裝是否正常。

  • 一切正常後我們開始生成祕鑰。會生成私鑰和公鑰。我們需要將公鑰上傳到pgp官方伺服器上。在2.0之前的版本中生成金鑰的時候需要我們填寫一些資訊,我們不用填寫一直回車就行。在Real Name 、Email Address、Comment中我們需要填寫我們的個人資訊。這三項好像我們的個人介紹一樣。因人而異。最後需要輸入passphrase。相當於pgp的使用密碼。這個很重要

  • 這些配置好會出現下面的畫面說明配置成功

  • 最後我們通過下面的命令將公鑰提交到伺服器 (97F3F174是pub id ,pgp不同版本pub id 長度不一樣。我們不用在意)
    gpg2 --keyserver hkp://pool.sks-keyservers.net --send-keys 97F3F174

專案配置

依賴oss-parent

  • 個人覺得這種方式不實用,因為我們平時開發maven不可能全都是那種沒有parent的專案。又因為maven只能單繼承。所以這種方式只能實現功能。但是不實用

點我看詳情

自定義配置

pom配置

  • 裡面就是一些上傳是的驗證,個人資訊自己修改成自己的就行

<build>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-source-plugin</artifactId>
              <version>2.1.2</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.7</version>
              <executions>
                  <execution>
                      <id>attach-javadocs</id>
                      <goals>
                          <goal>jar</goal>
                      </goals>
                  </execution>
              </executions>
          </plugin>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-gpg-plugin</artifactId>
              <version>1.1</version>
              <executions>
                  <execution>
                      <id>sign-artifacts</id>
                      <phase>verify</phase>
                      <goals>
                          <goal>sign</goal>
                      </goals>
                  </execution>
              </executions>
          </plugin>
      </plugins>
  </build>
  <licenses>
      <license>
          <name>The Apache License, Version 2.0</name>
          <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      </license>
  </licenses>
  <developers>
      <developer>
          <name>zxhTom</name>
          <email>[email protected]</email>
          <roles>
              <role>developer</role>
          </roles>
          <timezone>+8</timezone>
      </developer>
  </developers>
  <scm>
      <connection>scm:git:https://github.com/zxhTom/bottom.git</connection>
      <developerConnection>scm:git:https://github.com/zxhTom/bottom.git</developerConnection>
      <url>https://github.com/zxhTom/bottom</url>
      <tag>${project.version}</tag>
  </scm>
  <distributionManagement>
      <snapshotRepository>
          <id>ossrh</id>
          <url>https://oss.sonatype.org/content/repositories/snapshots</url>
      </snapshotRepository>
      <repository>
          <id>ossrh</id>
          <name>Maven Central Staging Repository</name>
          <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
      </repository>
  </distributionManagement>

全域性settings配置

  • 然後我們只需要在maven的全域性settings配置檔案中配置我們的sonatype賬號和pgp2的passphrase就行了。下面配置的password欄位就是我們註冊sonatype網站的密碼。username是我們申請工單的時候填寫的username,如果沒有填寫那麼就是我們的使用者名稱。
<!-- 前兩個如果我們用的是繼承oss-parent需要的。 -->
 <server>
    <id>sonatype-nexus-snapshots</id>
    <username>zxhTom</username>
    <password>*****</password>
  </server>
  <server>
    <id>sonatype-nexus-staging</id>
    <username>zxhTom</username>
    <password>******</password>
  </server>
  <!-- 下面這個使我們自定義用到的服務 -->
  <server>
    <id>ossrh</id>
    <username>zxhTom</username>
    <password>*****</password>
  </server>
  • 然後在新增一個profile
```

<profile>
      <id>ossrh</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <gpg.executable>gpg2</gpg.executable>
        <gpg.passphrase>*****</gpg.passphrase>
      </properties>
    </profile>
```

釋出

mven clean deploy

效果

  • 這裡暫時在myeclipse中打包會出錯。因為無法使用pgp,不知道什麼原因。目前只能在cmd中打包。

驗證

點我驗證

進入上方網站登入後進行檢視我們是否釋出的jar