zoukankan      html  css  js  c++  java
  • 发布一个自己的jar包给全球人使用

    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>870775401@qq.com</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

    • 这个时候我们就可以引用maven坐标使用了。但是目前在中央仓库还是无法搜索的。需要等待几个小时才可以。
  • 相关阅读:
    当前疫情期间,家里可以适当储备的物资
    35岁改行做程序员,需要勇气和决心
    离婚潮来临,女性在崛起
    摄影作品首先要取悦自己,更要打动他人
    京剧是该阳春白雪还是下里巴人?
    汶川和武汉哪个更让人铭记?
    35以上的女强人不结婚,只用平常待之
    苏州记忆之上班路上偶遇2美女打架
    SAP SD微观研究之销售发票自动生成初探
    Python requests库的使用(二)
  • 原文地址:https://www.cnblogs.com/zhangxinhua/p/11349745.html
Copyright © 2011-2022 走看看