一、背景

最近在做HBase的项目,不免会引用到一些工具类,如StringUtils,NumberUtils,DateUtils这些,公司底层有封装好可以直接使用。

但是项目完成,用maven打包部署的时候,由于公司底层集成了太多jar包,可能会导致冲突,使打完的jar包无法用java -jar 运行,报错是

Error: Invalid or corrupt jarfile realTimeImport-1.0-SNAPSHOT.jar

暂时定位是引用了太多jar包引起的,但其实我可能就只需要一些工具类。所以萌生了我能不能自己搭建一个maven仓库。

公司的maven库都是为app而引用的,都是com.bench.app,我搞一个com.dsj361显的很突兀。所以还是不用公司的了。

百度了一圈,发现可以用nexus搭建maven库,然后服务器放在公司虚拟机中,但是问题是,虚拟机可能随时会断点啊,清理啊什么的。

不是很稳定,放在云上,又不想花钱,那么放在github上可能就是一个最佳选择了。

二、操作

(1)首先github上新建一个账户,并且新建一个仓库

ssh地址为:
git@github.com:nicekk/maven.git
 
(2)git客户端配置
首先需要安装一个git客户端
https://gitforwindows.org/
从这里下载一个安装就好了。
生成密钥
打开git bash
 ssh-keygen -t rsa
一路下一步,即可安装到c:/user/xxxx/.ssh/下
去github上面,选择


 Settings进去,SSH and GPK keys
点击新增一个ssh-key
把刚刚生成的密钥的.pub文件内容复制到这里,并且写上对应的名字,区分
即可
 
 
 
(3)
在本地maven仓库的根目录下创建
cd 到/d/dev/maven-repository
git init
git remote add origin git@github.com:nicekk/maven.git
 
创建.gitignore 将文件匹配符*加入其中, 并将.gitignore提交git本地仓库master分支
 echo "*" >> .gitignore
 git add .gitignore -f
git commit -m 'add .gitignore'
 
(4)

分别创建分支snapshot与release并push至远端仓库,用于发布不同状态的artifects,默认情况切换至snapshot
git branch snapshot
git branch release
git push origin snapshot
git push origin release
git checkout snapshot
 
(5)开发共用的库
新建maven项目,开发...,开发完成后,使用mvn clean source:jar install安装至本地仓库
 
(6)使用git提交
cd 到 /d/dev/maven-repository(maven仓库根目录)
git add -f com/dsj361/common-utils/1.0-SNAPSHOT
git commit -m 'snapshot of com/dsj361/common-utils/1.0-SNAPSHOT'
git push origin snapshot
 
(7)此时私人的maven仓库就搭建完毕了,下面新建一个使用公共jar的项目测试
同样新建一个maven项目
加入reposity和dependency
<repositories>
<repository>
<id>github-maven-snapshot-repository</id>
<name>github-maven-snapshot-repository</name>
<url>https://raw.github.com/nicekk/maven/snapshot/</url>
</repository>
<repository>
<id>github-maven-release-repository</id>
<name>github-maven-release-repository</name>
<url>https://raw.github.com/nicekk/maven/release/</url>
</repository>
</repositories>

  

<dependency>
<groupId>com.dsj361</groupId>
<artifactId>common-utils</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

  

即可引入在github上的jar包了

(8)当公用项目有变更时,修改好,打包,提交,重复(6)即可

(9)如果你不喜欢用命令行的方式,觉得太费脑,那我下面写第三点,说一下tortoiseGit的使用

三、使用tortoiseGit提交git

1、下载

https://tortoisegit.org/download/

2、安装好这两个东西。

3.设置语言

4.设置密钥

TortoiseGit 使用扩展名为ppk的密钥,而不是ssh-keygen生成的rsa密钥。使用命令ssh-keygen -C "邮箱地址" -t rsa产生的密钥在TortoiseGit中不能用。而基于git的开发必须要用到rsa密钥,因此需要用到TortoiseGit的putty key generator工具来生成既适用于git的rsa密钥也适用于TortoiseGit的ppk密钥
运行TortoiseGit开始菜单中的puttygen程序

点击“Generate”按钮,鼠标在上图的空白地方来回移动直到进度条完毕,就会自动生一个随机的key,如下图示

(如有需要,可以为密钥设置对应的访问密码,就是修改上图中“Key passphrase”和“Confirm passphrase”的值)

5.将上图中多行文本框的内容全选、复制,并粘贴到git账户的 SSH public key中,这就是适用于git的公钥。

6.点击上图中的“Save private key”按钮,将生成的key保存为适用于TortoiseGit的私钥(扩展名为.ppk)。
7.运行TortoiseGit开始菜单中的Pageant程序,程序启动后将自动停靠在任务栏中,点击“Add Key”按钮,将第4步保存的ppk私钥添加进来,关闭对话框即可
9.提交
去刚刚maven仓库根目录,右键,选择Git 提交,写好提交comment,点击提交并且push按钮即可
 

四、最后祝大家工作生活顺利

利用github搭建私人maven仓库的更多相关文章

  1. 利用github搭建个人maven仓库

    之前看到有开源项目用了github来做maven仓库,寻思自己也做一个.研究了下,记录下. 简单来说,共有三步: deploy到本地目录 把本地目录提交到gtihub上 配置github地址为仓库地址 ...

  2. 使用Nexus搭建企业maven仓库(二)

    先阅读<使用Nexus搭建企业maven仓库(一)> http://blog.csdn.net/ouyida3/article/details/40747545 1.官网眼下最新的版本号是 ...

  3. Android业务组件化之Gradle和Sonatype Nexus搭建私有maven仓库

    前言: 公司的业务组件化推进的已经差不多三四个月的时间了,各个业务组件之间的解耦工作已经基本完成,各个业务组件以module的形式存在项目中,然后项目依赖本地的module,多少有点不太利于项目的并行 ...

  4. 【教程向】——基于hexo+github搭建私人博客

    前言 1.github pages服务生成的全是静态文件,访问速度快: 2.免费方便,不用花一分钱就可以搭建一个自由的个人博客,不需要服务器不需要后台: 3.可以随意绑定自己的域名,不仔细看的话根本看 ...

  5. 【保姆级】利用Github搭建自己的个人博客,看完就会

    大家好,我是辰哥~ 作为一名喜欢技术的爱好者,平时喜欢把自己学习技术的心得或者一些踩坑.易错的过程记录下来,首选的是技术平台(博客),今天辰哥来教大家如何利用Github来搭建一个自己的个人博客平台. ...

  6. 利用gitHub搭建博客

    ##1.gitHub Page的的使用我觉得这边博文写的很清楚,方法.步骤.优缺点以及实例,所以就借用一下啦^_^ [搭建一个免费的,无限流量的Blog](http://www.ruanyifeng. ...

  7. 利用GitHub搭建Hexo博客并开启HTTPS

    Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页. GitHub 是一个面向开源及私有软件项目的托管平台 ...

  8. 搭建局域网maven仓库

    第一步: 下载Nexus http://nexus.sonatype.org/downloads/下载最新版本 解压缩到任意目录,我的直接解压到了E盘---------->E:\nexus-2. ...

  9. 利用github搭建个人网站

    1.注册一个github  https://github.com/ 2.新建一个仓库  仓库名 用 Owner.github.io 的格式,然后点击创建 3.源码上传至github 安装github桌 ...

随机推荐

  1. ABAP-根据采购订单行项目统计供应商未清额和已清额

    1.传入和传出表结构都是一样的: FUNCTION zmm_fm_po_invence. *"------------------------------------------------ ...

  2. 最短路径Dijkstra算法模板题---洛谷P3371 【模板】单源最短路径(弱化版)

    题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779. 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入格式 第一行 ...

  3. testng学习笔记-- 场景和module

    一.定义 TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便. TestNG是一个开源自动化测试框架;TestNG表示下一代(Next Ge ...

  4. 基于开源中文分词工具pkuseg-python,我用张小龙的3万字演讲做了测试

    做过搜索的同学都知道,分词的好坏直接决定了搜索的质量,在英文中分词比中文要简单,因为英文是一个个单词通过空格来划分每个词的,而中文都一个个句子,单独一个汉字没有任何意义,必须联系前后文字才能正确表达它 ...

  5. Java 从入门到进阶之路(二)

    之前的文章我们介绍了一下用 IDEA 编辑器创建一个 Java 项目并输出 HelloWorld,本章我们来看一下 Java 中的变量和基本数据类型. 在这之前我们先来看一下 Java 中的关键字,这 ...

  6. 谈自由,ASP.NET Core才是未来?

    首先我要说一下自己对自由的理解: 自由是我可以选择不干什么,但我要保留我可以干什么的可能性. 比如说我现在只有一个码农的角色,但我仍然要保留我可以扮演其他角色的可能, 比如成为一个作者,当我写下文章的 ...

  7. Java基础之Comparable与Comparator

    Java基础之Comparable与Comparator 一.前言: Java中实现对对象的排序一般情况下主要有以下两种实现方式(万物皆对象嘛): 对象所在的类实现Comparable 接口 定义比较 ...

  8. API 资源隔离系统设计与实现

    (马蜂窝技术原创内容,公众号 ID:mfwtech) Part 1 背景 大交通业务需要对接机票.火车票.租车.接送机等业务的外部供应链,供应商的数据接口大部分通过 HTTP.HTTPS 等协议进行通 ...

  9. Delphi - cxGrid内容xlsx、xls、csv格式导出

    .xls格式导出,uses中添加cxGridExportLink 代码如下: function SaveToExcel(gridMain: TcxGrid; FileName: string): st ...

  10. Spring源码解析之ConfigurableApplicationContext

    UML图 接口的作用 从上面的UML图中,可以看到 ConfigurableApplicationContext 直接继承了 ApplicationContext, Lifecycle, Closea ...