`
AILIKES
  • 浏览: 187491 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

发布jar包到Maven中央仓库

阅读更多

平时自己开发的工具类或者其他的框架的jar包一般都是放在本地。或者把代码上传到github让别人去下载然后自己打包。今天就说说如何把自己的jar包发布到Maven的中央仓库。让其他使用你的jar包的直接去中央仓库下载。如果你用的是阿里云的maven中央仓库。同样阿里云的中央仓库也会同步你的jar包。 
1 注册JIRA账号 
注册地址:https://issues.sonatype.org/secure/Dashboard.jspa 
2 创建 issue 
这里写图片描述
这些都是要填写的!

Project URL 和SCM url 可以填写自己github项目的地址 
Group ID 可以按自己需求填写,比如我填写的是com.ailikes

创建好以后 sonatype的工作人员审核处理,速度还是很快的,一般一个工作日以内,当Issue的Status变为RESOLVED后,就可以进行下一步操作了,否则,就等待
这里写图片描述
到了这里说明你已经能够去上传自己的jar包了 
3 配置maven Setting.xml文件 

 
添加Server节点

       <server>
            <id>自行替换</id>
            <username>替换成自己的JIRA账号</username>
            <password>替换成自己的JIRA账号密码</password>
        </server>

4 创建maven工程 
设置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.0</modelVersion>
	<groupId>com.ailikes</groupId>
	<artifactId>common-util</artifactId>
	<version>1.1.0-RELEASE</version>
	<name>common-util</name>
	<packaging>jar</packaging>
	<description>工具类工程</description>
	<url>https://github.com/AilikesXu/common-util.git</url>
	<developers>
	    <developer>
	            <name>ailikes</name>
	            <id>ailikes</id>
	            <email>15600499930@163.com</email>
	            <roles>
	                <role>Developer</role>
	            </roles>
	            <timezone>+8</timezone>
	        </developer>
	</developers>
	<licenses>
        <license>
            <name>Apache 2</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
            <comments>A business-friendly OSS license</comments>
        </license>
    </licenses>
    <scm>
        <url>https://github.com/AilikesXu</url>
        <connection>https://github.com/AilikesXu/common-util.git</connection>
    </scm>

	<properties>
		<argLine>-Dfile.encoding=UTF-8</argLine>
		<project-description>工具类工程</project-description>
		<java-version>1.7</java-version>
		<org.aspectj-version>1.8.4</org.aspectj-version>
		<org.slf4j-version>1.7.9</org.slf4j-version>
		<!-- 不加下面这一行会报错 [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent! 增加之后 Using 'UTF-8' encoding to copy filtered resources. -->
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<org.springframework-version>4.1.4.RELEASE</org.springframework-version>
		<jetty.version>8.1.16.v20140903</jetty.version>
	</properties>
	<dependencies>
		<!-- java bean 验证 -->
		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>1.1.0.Final</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator</artifactId>
		  	<version>5.4.1.Final</version>
		  	<scope>provided</scope>
		</dependency>
	</dependencies>
	<build>
	    <plugins>
	     	<plugin>
	            <groupId>org.apache.maven.plugins</groupId>
	            <artifactId>maven-compiler-plugin</artifactId>
	            <version>3.3</version>
	            <configuration>
	                <!-- 指定source和target的jdk版本是1.7 -->
	                <source>1.7</source>
	                <target>1.7</target>
	            </configuration>
	        </plugin>
		    <!-- 源码插件 -->
	  		<plugin>
	  			<groupId>org.apache.maven.plugins</groupId>
	  			<artifactId>maven-source-plugin</artifactId>
	  			<version>2.2.1</version>
	  			<!-- 发布时自动将源码同时发布的配置 -->
	  			<executions>
			    	<execution>
			    		<id>attach-sources</id>
			     		<goals>
			       			<goal>jar</goal>
			      		</goals>
			     	</execution>
			    </executions>
	  		</plugin>
	    </plugins>
	</build>
	<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>
                        <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>
                </plugins>
            </build>
            <distributionManagement>
                <snapshotRepository>
                    <id>sonatype</id>
                    <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
                </snapshotRepository>
                <repository>
                    <id>sonatype</id>
                    <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
                </repository>
            </distributionManagement>
        </profile>
    </profiles>
</project>


必须要的:name url description licenses scm
           <distributionManagement>                <snapshotRepository>
                    <id>oss</id><!-- settings.xml中server节点的id-->
                    <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
                </snapshotRepository>
                <repository>
                    <id>oss</id>
                    <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
                </repository>
            </distributionManagement>

5 windows环境安装gpg4win 
下载地址:https://www.gpg4win.org/download.html 
查看版本: 
这里写图片描述

$ gpg --gen-key
gpg (GnuPG) 1.4.19; Copyright (C) 2015 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) Y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: ljbmxsm
Email address: ljbmxsm@gmail.com
Comment: flink-elasticsearch-connector
You selected this USER-ID:
    "iteblog (flink-elasticsearch-connector) <wyphao.2007@163.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
+++++
.+++++
gpg: /c/Users/iteblog/.gnupg/trustdb.gpg: trustdb created
gpg: key B15C5AA3 marked as ultimately trusted
public and secret key created and signed.

设置名字+邮箱,其他可以使用默认值,记住输入的passphrase,部署会用到 
6 上传密钥 
上传刚刚生成的秘钥 
这里写图片描述
上传命令

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys CF21873A--上传到服务器
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys  CF21873A --查看是否上传整个
  • 1
  • 2

主要:keyserver.ubuntu.com:11371 现在这个是可用的,之前网上的pool.sks-keyservers.net 反正我上传成功但是在后面验证的时候不是用的这个地址。

7执行部署

mvn clean deploy -P release
  • 1

后面的release参数是 <id>release</id> <!-- 部署要用到 --> 这个

8 登录网站查看

地址:https://oss.sonatype.org 
用户名密码就是上面注册的。 
这里写图片描述
查看自己的(你定义的版本号不能带SNAPSHOT要不然看不到) 
a)构件准备好之后,在命令行上传构建;

b)在https://oss.sonatype.org/ “close”并“release”构件;

c)等待同步好(大约2小时多)之后,就可以使用了

9 通知管理员

去网站https://issues.sonatype.org 登录通知你的管理然后等待 
这里写图片描述
然后到这里就全部完成。剩下的就是等同步到中央仓库

看看我自己随便发布的一个结果: 
这里写图片描述
去中央仓库查看https://search.maven.org(中央仓库需要两个小时后) 
这里写图片描述

  • 大小: 17 KB
分享到:
评论

相关推荐

    详解如何将本地JAR包添加到本地Maven仓库中

    比如sqljdbc.jar在Maven中央仓库中找不到,但是我们的maven工程中确实需要这样的一个jar包,那么我们首先需要下载对应版本的sqljdbc.jar包到本地,然后按照以下的命令添加到本地仓库。(ps:前提是你已经下载并配置...

    maven本地仓库错误jar包删除

    一键删除maven本地仓库中下载错误的jar包资源(以lastUpdated结尾的文档)

    maven本地仓库(常用Jar包)

    Maven中央仓库是全球最大的开源软件库,包含了数以万计的Java库。然而,由于网络环境的不稳定或者下载速度的问题,从中央仓库下载大型项目的所有依赖可能会耗费大量时间。为了避免这种情况,开发人员可以预先将常用...

    手动导jar包到Maven本地仓库的教程

    然而,并非所有的jar包都可以直接通过Maven中央仓库下载获得,这时就需要我们将这些jar包手动导入到Maven本地仓库中。本文将详细介绍如何使用Maven命令行工具`mvninstall:install-file`来实现这一过程。 #### Maven...

    Android-JarsCrawler爬取阿里maven中央仓库的所有jar包

    本文将详细介绍如何使用名为JarsCrawler的工具,来爬取阿里Maven中央仓库的所有jar包。 JarsCrawler是一款专门设计用于遍历和下载Maven仓库中所有jar包的工具。它可以帮助开发者快速获取所需库,尤其对于进行自动化...

    将jar包添加到本地maven仓库

    有时,我们可能会遇到一些不常见的库或者自定义的jar包,这些库并未在Maven中央仓库中提供,这时就需要将这些jar包手动添加到本地Maven仓库,以便在项目中引用。以下是一个详细的步骤指南,教你如何完成这一过程。 ...

    maven批量导入第三方jar包至本地库工具

    然而,有时候我们可能需要使用一些不在中央仓库中的第三方库,这就需要我们将这些jar包手动导入到Maven的本地库。"maven批量导入第三方jar包至本地库工具"就是为了解决这个问题而设计的。 首先,我们需要理解Maven...

    maven的本地仓库jar包

    "maven的本地仓库jar包"压缩文件通常包含了大量的Maven中央仓库中的jar包,这些jar包涵盖了各种开源库和框架,例如Spring、Hibernate、Apache Commons等。文件名“6c60a2c4a31a4aa089ef89fa635f503f”很可能是一个...

    maven中央仓库下载jar包并本地手动安装.doc

    在某些情况下,我们可能需要从非Maven中央仓库下载特定的jar包,并将其手动安装到本地Maven仓库,以便项目可以引用。以下就是如何通过"Maven中央仓库"下载并本地安装jar包的详细步骤。 首先,你需要访问Maven中央...

    maven中央仓库jar包下载工具

    将jar包依赖关系拷贝到pom.xml文件中的dependencies标签体中; 运行bat文件即可 具体操作:http://www.cnblogs.com/Marydon20170307/p/9149256.html

    JxBrowser开发maven仓库jar包

    当"JxBrowser开发maven仓库jar包"这个资源在中央仓库找不到时,开发者可以从其他来源(如互联网上的归档版本、项目官方网站等)获取JxBrowser的jar包。下载后,为了在项目中使用这个库,我们需要将jar包添加到本地...

    maven仓库jar包

    Maven仓库是Java开发中至关重要的一个组成部分,它是一个集中存储各种软件构件(如JAR包)的中央仓库,便于开发者获取、管理和分享依赖。Maven通过配置项目构建的POM.xml文件,能够自动从仓库中下载所需的jar包,极...

    Java发布包到maven公共仓库完整教程

    以下是一个详细的教程,教你如何将Java项目发布到Maven中央仓库。 **一、注册账号和提交申请** 1. **注册账号**: 首先,你需要访问Sonatype的JIRA系统(https://issues.sonatype.org/secure/Dashboard.jspa)来...

    Maven引入本地Jar包并打包进War包中的方法

    在平时的开发中,有一些Jar包因为种种原因,在Maven的中央仓库中没有收录,所以就要使用本地引入的方式加入进来。这种方法可以让我们在没有中央仓库支持的情况下,仍然可以使用需要的Jar包。 拷贝至项目根目录 ...

    自定义jar包注入maven仓库使用.doc

    在IT行业中,构建和管理项目...这对于开发过程中使用自定义组件或第三方未发布到中央仓库的库非常有用。记得在团队协作中,如果需要共享自定义jar包,可以将其上传到私有Maven仓库,以便所有团队成员都能方便地使用。

    maven仓库 jar包

    2. **中央仓库**: Maven的官方仓库,包含了大量开源项目的jar包,如Spring、Hibernate等。它是所有公共开源项目的主要发布地,任何人都可以免费访问。 3. **远程仓库**: 除了中央仓库,还可以配置其他的远程仓库,...

    maven jar包直接根据pom下载

    当你在POM文件中添加依赖时,Maven会自动从中央仓库或其他指定的远程仓库下载这些依赖及其传递性依赖,即依赖的依赖。这个过程被称为依赖解析。 具体步骤如下: 1. **编辑POM文件**:打开你的POM.xml,将你需要的...

    详解如何将JAR包发布到Maven中央仓库

    发布JAR包到Maven中央仓库是一个必要的步骤,以便让全球的Java开发者能够方便地通过Maven构建系统引入你的库作为依赖。Maven中央仓库不直接支持上传,而是需要通过第三方仓库,如Sonatype OSSRH (Open Source ...

Global site tag (gtag.js) - Google Analytics