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坐标使用了。但是目前在中央仓库还是无法搜索的。需要等待几个小时才可以。

发布一个自己的jar包给全球人使用的更多相关文章

  1. Spring Boot 怎么打一个可执行 Jar 包?

    传统的 Java 应用程序都需要打一个 war 包,并到到 Tomcat webapps 目录下运行. Java 支持打 Jar 包,但没有提供一个标准的方式在一个 Jar 包内再加载嵌入别的 Jar ...

  2. 如何发布本地maven项目jar包部署到nexus私服?

    首先在我们的pom里面描述我们要部署的地址: <distributionManagement> <repository> <id>release</id> ...

  3. Java Service Wrapper 发布Java程序或者jar包为Windows服务

    下载Windows版本:http://nchc.dl.sourceforge.net/sourceforge/wrapper/wrapper-windows-x86-32-3.2.3.zip 现在目前 ...

  4. 发布一个简单的npm包

    本文简单地记录了发布一个简单npm包的过程,以便后续参考使用. 初始化npm init 通过npm init创建一个package.json文件 D:\robin\lib\weapp-utils> ...

  5. 记一个 protobuf 的 jar 包冲突

    尝试使用 spark 以 bulkload 的方式写 HBase 时,遇到一个问题,错误堆栈如下 19/02/02 09:00:43 ERROR Utils: Aborting task java.l ...

  6. JAR-使用JAVA命令编译打包一个可执行jar包

    一.开发一个演示项目 项目源代码开发 项目名称叫jar-package-example(其实只是一个文件夹, 用以将演示的所有文件夹和文件存放在其中, 没啥其它作用), 为了方便, 后文统一叫jar- ...

  7. 如何在协作开发安卓项目中打jar包给合作人

    一般情况下,id都是安卓自动生成的.使用时只要用R.id.xx就可以了.但是,在合作开发安卓时,需要将自己开发的代码部分打成jar包,甚至做混淆. 这就需要使用java的反射机制.在取id时使用如下类 ...

  8. maven项目发布到Tomcat丢失jar包

    昨天看了一篇tomcat设置的文章,说要把第一个勾上,这样不需要更新到tomcat.  一启动tomcat就发现丢包.后来在网上看了许多文章,说要update maeven项目,然后你就会发现启动过程 ...

  9. composer 发布一个自己的扩展包

    练习写了一个扩展包,步骤参考github项目的readme.md 文件.https://github.com/codingmonkey9/test 说明:只是自己简单记录一下,没有详细写. 如何发布具 ...

随机推荐

  1. 聚类时的轮廓系数评价和inertia_

    在进行聚类分析时,机器学习库中提供了kmeans++算法帮助训练,然而,根据不同的问题,需要寻找不同的超参数,即寻找最佳的K值 最近使用机器学习包里两个内部评价聚类效果的方法:clf=KMeans(n ...

  2. c++学习书籍推荐《C++程序设计语言(特别版)》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <C++程序设计语言(特别版•十周年中文纪念版)>编辑推荐:十周年纪念版,体味C++语言的精妙与魅力,享受与大师的心灵对话.1979年,Biarn ...

  3. SpringCloud-Alibaba-Sentinel(1)初探

    Sentinel 是什么? Sentinel 具有以下特征: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围) ...

  4. 个人永久性免费-Excel催化剂功能第97波-快递单号批量查询物流信息

    电商时代,快递已进千万家,做电商零售行业的,快递信息的再挖掘,也显得更有意义,是数据精细化运营中必不可少的一环.一般站在系统的角度,数据用于业务流转的增删改查使用,而对于分析需求来说,这些业务系统里集 ...

  5. 个人永久性免费-Excel催化剂功能第26波-正确的Excel密码管理之道

    Excel等文档肩负着我们日常大量的信息存储和传递工作,难免出现数据安全的问题,OFFICE自带的密码设置,在什么样的场景下才有必要使用?网上所宣称的OFFICE文档密码保护不安全,随时可被破解,究竟 ...

  6. 读完这篇文章,5G 就没有秘密了

    如果我们现在要制作一个 2019 年的热词排行榜,相信 5G 一定名列榜单前茅.作为第五代移动通信网络,5G 技术一直备受瞩目.随着 5G 商用牌照在国内的发放,各大手机厂商也是紧接着推出各款 5G ...

  7. 模板配置教程:Phpcms v9怎么更换模板

    先分享下大概的步骤: 1.上传模版文件到服务器: 2.在站点管理 里边[模板风格配置]选择新模板: 3.设置不同模型对应模板: 4.修改现有的栏目,匹配新模板: 5.更新栏目缓存.系统缓存,更新HTM ...

  8. shiro解析ini文件

    来吧,看看shiro是怎么解析ini文件的,这里假设ini文件在classpath下,名字叫做shiro.ini Factory<org.apache.shiro.mgt.SecurityMan ...

  9. 计数排序and基数排序

    1 计数排序,稳定    复杂度o(k + n) public static int[] countingSort(int[] nums) { int n = nums.length; ; ; i & ...

  10. Split函数的使用

    Split函数,用来返回一个下标从零开始的一维数组,如下举例说明 1.split(' '),''号中间是空格 def break_words(stuff):    """ ...