上传自己的构件(Jar)到Maven中央仓库

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

背景:
               用了Maven之后,你有没有这样的想法,自己一直在使用别人贡献的代码,自己能不能把自己觉得好的代码也贡献出来让大家方便。
    还有如果你也是一名程序员,你会不会觉得要是把自己积累起来日常常用的代码工具组件放到Maven的中央仓库之后,很方便维护和升级,
    可以做到  一次发布,到处使用 。
               不用交给云盘和代码托管系统来管理,只需要知道 构件的坐标 + Maven之类的构建工具就能获取想要的构件。

         
预备知识:
    1.Java 
          http://www.oracle.com/technetwork/cn/java/javase/downloads/index.html

    2.Maven
          https://maven.apache.org/

    3.Git
          https://git-scm.com/

    4.  GnuGPG(gpg4win)
          http://gpg4win.org/
             
    5.Github
          https://github.com/
      
    6.Sonatype公司提供的
         https://issues.sonatype.org
          https://oss.sonatype.org

    7.大概结构图
     上传自己的构件(Jar)到Maven中央仓库_第1张图片
    
准备工作:
    1.JDK安装配置

    2 . Maven安装配置

    3 . Git安装配置(可选)
    
    4 . OpenGPG安装配置

    这四步完成之后的结果:
     上传自己的构件(Jar)到Maven中央仓库_第2张图片     
    
    5.到  https://github.com/ 网站注册一个账号

    6.到  https://issues.sonatype.org 网站注册一个账号

动手实验:
    
    (1) 在 https://github.com/ 网站创建一个仓库
         图1-1:登陆
          上传自己的构件(Jar)到Maven中央仓库_第3张图片

         图1-2:点击 “+” 好创建一个新的仓库
          上传自己的构件(Jar)到Maven中央仓库_第4张图片

         图1-3:仓库的信息填写,这里的必填项是仓库的名称Respository name
          上传自己的构件(Jar)到Maven中央仓库_第5张图片
    
         
         图1-4:找到刚刚创建的仓库,获取仓库的https连接地址和ssh连接地址
          上传自己的构件(Jar)到Maven中央仓库_第6张图片
          上传自己的构件(Jar)到Maven中央仓库_第7张图片
         HTTPS地址:
                    https://github.com/zhangguangyong/codes.git
         SSH地址:
                    [email protected]:zhangguangyong/codes.git

              
    (2) 在 https://issues.sonatype.org 网站创建一个issues——创建的issues需要等待审核
         图2-1:登陆
          上传自己的构件(Jar)到Maven中央仓库_第8张图片
         
         图2-2:创建issues
          上传自己的构件(Jar)到Maven中央仓库_第9张图片
         
         图2-3:Issues的信息填写
          上传自己的构件(Jar)到Maven中央仓库_第10张图片
          Description 和 Attachment 不需要填写
          上传自己的构件(Jar)到Maven中央仓库_第11张图片

         
                          上传自己的构件(Jar)到Maven中央仓库_第12张图片
                        
                        点击Issues菜单,选择刚刚创建Issues,等待管理员的审批
                          上传自己的构件(Jar)到Maven中央仓库_第13张图片
                   
                   审批通过之后,会看到这样的回复:
                    上传自己的构件(Jar)到Maven中央仓库_第14张图片


         
    (3) 通过GnuGPG来创建一个公钥
              参考: http://my.oschina.net/huangyong/blog/226738
          上传自己的构件(Jar)到Maven中央仓库_第15张图片
         
    (4) 创建一个Maven项目 —— 配置 settings.xml、pom.xml、发布到  https://oss.sonatype.org 仓库
         
         图4-1:配置maven安装目录下 conf/settings.xml 文件
          上传自己的构件(Jar)到Maven中央仓库_第16张图片
         
         settings.xml文件的内容:

          xml version="1.0" encoding="UTF-8" ?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    
    <localRepository>D:/Dev/Repos/MavenlocalRepository>
    
    
    
    <pluginGroups>
        
    pluginGroups>
    
    <proxies>
        
    proxies>
    
    <servers>
        
        
        
        
        <server>
            <id>ossid>
            <username>zhanggyusername>
            <password>xxxxxxxxpassword>
        server>
    servers>
    
    <mirrors>
        
        
            
    mirrors>
    
    <profiles>
        
        
    
    profiles>
    
settings >          


         
         图4-2:配置项目的pom.xml
         项目的目录结构(这里是在eclipse中创建的,也可以自己手动创建):
          上传自己的构件(Jar)到Maven中央仓库_第17张图片
             
         pom.xml 文件的内容:  
         
          < 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.0modelVersion>
    <groupId>com.github.zhangguangyonggroupId>
    <artifactId>codes-commonartifactId>
    <version>0.0.1version>
    <packaging>jarpackaging>
    <name>codes-commonname>
    <url>https://github.com/zhangguangyong/codesurl>
    <description>Code Reponsitorydescription>
    
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txturl>
        license>
    licenses>
    <developers>
        <developer>
            <name>zhangguangyongname>
            <email>1243610991@qq.comemail>
        developer>
    developers>
    <scm>
        <connection>scm:git@github.com:zhangguangyong/codes.gitconnection>
        <developerConnection>scm:git@github.com:zhangguangyong/codes.gitdeveloperConnection>
        <url>https://github.com/zhangguangyong/codesurl>
    scm>
    <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    properties>
    <dependencies>
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>3.8.1version>
            <scope>testscope>
        dependency>
    dependencies>
    <profiles>
        <profile>
            <id>releaseid>
            <build>
                <plugins>
                    
                    <plugin>
                        <groupId>org.apache.maven.pluginsgroupId>
                        <artifactId>maven-source-pluginartifactId>
                        <version>2.2.1version>
                        <executions>
                            <execution>
                                <phase>packagephase>
                                <goals>
                                    <goal>jar-no-forkgoal>
                                goals>
                            execution>
                        executions>
                    plugin>
                    
                    <plugin>
                        <groupId>org.apache.maven.pluginsgroupId>
                        <artifactId>maven-javadoc-pluginartifactId>
                        <version>2.9.1version>
                        <executions>
                            <execution>
                                <phase>packagephase>
                                <goals>
                                    <goal>jargoal>
                                goals>
                            execution>
                        executions>
                    plugin>
                    
                    <plugin>
                        <groupId>org.apache.maven.pluginsgroupId>
                        <artifactId>maven-gpg-pluginartifactId>
                        <version>1.5version>
                        <executions>
                            <execution>
                                <phase>verifyphase>
                                <goals>
                                    <goal>signgoal>
                                goals>
                            execution>
                        executions>
                    plugin>
                plugins>
            build>
            <distributionManagement>
                <snapshotRepository>
                    <id>ossid>
                    <url>https://oss.sonatype.org/content/repositories/snapshots/url>
                snapshotRepository>
                <repository>
                    <id>ossid>
                    <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/url>
                repository>
            distributionManagement>
        profile>
    profiles>
project>
         
                   
         注意事项:settings.xml文件节点< sever> 下的 节点 需要与 pom.xml 文件 节点 和 节点 下的 节点保持一致

        图4-3:发布项目到 https://oss.sonatype.org 仓库
           使用命令cmd到项目的根路径
          上传自己的构件(Jar)到Maven中央仓库_第18张图片
         执行命令:mvn clean deploy -P release
          上传自己的构件(Jar)到Maven中央仓库_第19张图片
         命令执行完之后,就可以到  https://oss.sonatype.org 下查看自己刚刚发布的构件了
         
         

    (5) 到 https://oss.sonatype.org 仓库 操作自己发布的构件(刚刚用maven发布的)——1.关闭,2.发布( 需要等到第(2)步的issues审核通过才能发布 )
    
         图5-1:进入  https://oss.sonatype.org 查看自己发布的构件
          上传自己的构件(Jar)到Maven中央仓库_第20张图片
         
          上传自己的构件(Jar)到Maven中央仓库_第21张图片

          上传自己的构件(Jar)到Maven中央仓库_第22张图片

         找到自己发布的构建,点击关闭 ( 找组名是:com.github.xxx 开头的,我们刚刚在pom.xml里面填写的组件就是 com.github.zhangguangyong)
          上传自己的构件(Jar)到Maven中央仓库_第23张图片
         
          关闭之后需要等待审批,审批成功之后,大概是这个样子:
          上传自己的构件(Jar)到Maven中央仓库_第24张图片

         关闭的审核通过之后,可进行发布了(在发布前需要确保之前创建Issues已经审批通过了,不然会报错没有权限)
                   
         
         这里报错的可能:
         1. 刚刚创建的Issues还没有审批通过
         2. 项目的pom.xml里面的< groupId > 与 创建Issues时候填写的 group Id 不一致
          上传自己的构件(Jar)到Maven中央仓库_第25张图片

                    
    
    (6) 在 https://oss.sonatype.org 发布成功之后,再去 https://issues.sonatype.org 给管理员一个反馈,说: "你的构件已经发布成功了".
         在 https://issues.sonatype.org 等待管理员的审核,通过之后,就可以在 http://search.maven.org/  上面所搜你发布的构件了 
         
         图6-1:通知Issues的管理员,你的构件在  https://oss.sonatype.org 上成功发布
          上传自己的构件(Jar)到Maven中央仓库_第26张图片
              
         图6-2:Issues管理员的反馈如果是这样的那恭喜你,你的构件就能够在maven中央仓库中搜索到了:  http://search.maven.org/ 
         

         图6-3:在  http://search.maven.org/ 上搜索自己的构件 
          上传自己的构件(Jar)到Maven中央仓库_第27张图片
     

参考:
http://my.oschina.net/huangyong/blog/226738
http://www.trinea.cn/dev-tools/upload-java-jar-or-android-aar-to-maven-center-repository




来自为知笔记(Wiz)


转载于:https://my.oschina.net/u/2335754/blog/476676

你可能感兴趣的:(上传自己的构件(Jar)到Maven中央仓库)