利用github搭建个人maven仓库

缘起

之前看到有开源项目用了github来做maven仓库,寻思自己也做一个。研究了下,记录下。

简单来说,共有三步:

  1. deploy到本地目录
  2. 把本地目录提交到gtihub上
  3. 配置github地址为仓库地址

配置local file maven仓库

deploy到本地

maven可以通过http, ftp, ssh等deploy到远程服务器,也可以deploy到本地文件系统里。例如:

  <distributionManagement>
    <repository>
      <id>hengyunabc-mvn-repo</id>
      <url>file:/home/hengyunabc/code/maven-repo/repository/</url>
    </repository>
  </distributionManagement>

通过命令行则是:

mvn deploy -DaltDeploymentRepository=hengyunabc-mvn-repo::default::file:/home/hengyunabc/code/maven-repo/repository/

推荐使用命令行来deploy,避免在项目里显式配置。

https://maven.apache.org/plugins/maven-deploy-plugin/

https://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html

把本地仓库提交到github上

上面把项目发布到本地目录home/hengyunabc/code/maven-repo/repository里,下面把这个目录提交到github上。

在Github上新建一个项目,然后把home/hengyunabc/code/maven-repo下的文件都提交到gtihub上。

cd /home/hengyunabc/code/maven-repo/
git init
git add repository/*
git commit -m ‘deploy xxx‘
git remote add origin [email protected]:hengyunabc/maven-repo.git
git push origin master

最终效果可以参考我的个人仓库:

https://github.com/hengyunabc/maven-repo

github maven仓库的使用

因为github使用了raw.githubusercontent.com这个域名用于raw文件下载。所以使用这个maven仓库,只要在pom.xml里增加:

    <repositories>
        <repository>
            <id>hengyunabc-maven-repo</id>
            <url>https://raw.githubusercontent.com/hengyunabc/maven-repo/master/repository</url>
        </repository>
    </repositories>

maven仓库工作的机制

下面介绍一些maven仓库工作的原理。典型的一个maven依赖下会有这三个文件:

https://github.com/hengyunabc/maven-repo/tree/master/repository/io/github/hengyunabc/mybatis-ehcache-spring/0.0.1-SNAPSHOT

maven-metadata.xml
maven-metadata.xml.md5
maven-metadata.xml.sha1

maven-metadata.xml里面记录了最后deploy的版本和时间。


<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1.0">
  <groupId>io.github.hengyunabc</groupId>
  <artifactId>mybatis-ehcache-spring</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <versioning>
    <snapshot>
      <timestamp>20150804.095005</timestamp>
      <buildNumber>1</buildNumber>
    </snapshot>
    <lastUpdated>20150804095005</lastUpdated>

  </versioning>
</metadata>

其中md5, sha1校验文件是用来保证这个meta文件的完整性。

maven在编绎项目时,会先尝试请求maven-metadata.xml,如果没有找到,则会直接尝试请求到jar文件,在下载jar文件时也会尝试下载jar的md5, sha1文件。

maven-metadata.xml文件很重要,如果没有这个文件来指明最新的jar版本,那么即使远程仓库里的jar更新了版本,本地maven编绎时用上-U参数,也不会拉取到最新的jar!

所以并不能简单地把jar包放到github上就完事了,一定要先在本地Deploy,生成maven-metadata.xml文件,并上传到github上。

参考:http://maven.apache.org/ref/3.2.2/maven-repository-metadata/repository-metadata.html

maven的仓库关系

https://maven.apache.org/repository/index.html

配置使用本地仓库

想要使用本地file仓库里,在项目的pom.xml里配置,如:

    <repositories>
        <repository>
            <id>hengyunabc-maven-repo</id>
            <url>file:/home/hengyunabc/code/maven-repo/repository/</url>
        </repository>
    </repositories>

注意事项

maven的repository并没有优先级的配置,也不能单独为某些依赖配置repository。所以如果项目配置了多个repository,在首次编绎时,会依次尝试下载依赖。如果没有找到,尝试下一个,整个流程会很长。

所以尽量多个依赖放同一个仓库,不要每个项目都有一个自己的仓库。

参考

http://stackoverflow.com/questions/14013644/hosting-a-maven-repository-on-github/14013645#14013645

http://cemerick.com/2010/08/24/hosting-maven-repos-on-github/

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-08 22:07:25

利用github搭建个人maven仓库的相关文章

利用github搭建私人maven仓库

一.背景 最近在做HBase的项目,不免会引用到一些工具类,如StringUtils,NumberUtils,DateUtils这些,公司底层有封装好可以直接使用. 但是项目完成,用maven打包部署的时候,由于公司底层集成了太多jar包,可能会导致冲突,使打完的jar包无法用java -jar 运行,报错是 Error: Invalid or corrupt jarfile realTimeImport-1.0-SNAPSHOT.jar 暂时定位是引用了太多jar包引起的,但其实我可能就只需要

利用GitHub搭建个人网站

转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/52203759 http://www.ganecheng.tech/blog/52203759.html (浏览效果更好) 最近在找实习,需要写一份含有丰富内容的简历,但是简历最多只能写两页纸.再多的话就会让面试官烦了,找不到重点.如果还想向面试官展示更多的个人能力,经验,经历,在简历上放上自己的个人网站链接无疑是一种比较好的方式.面试官想了解更多的话,打开链接就知道你的知识的深度

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

先阅读<使用Nexus搭建企业maven仓库(一)> http://blog.csdn.net/ouyida3/article/details/40747545 1.官网目前最新的版本是2.10.0,从2.6开始就要求jdk7以上,否则报错: Unsupported major.minor version 51.0 (51.0是jdk1.7,,50.0是1.6,49是1,5,48是1.4) 2.如果机器不方便安装jdk1.7,下载2.5版本即可,下载地址: http://www.sonatyp

GitHub建立个人Maven仓库

一.配置github 创建mvn-repo仓库 首先在你的github上创建一个maven-repo仓库,这个最后将作为实际上jar包发布的仓库. 设置name 在github的个人设置中,设置好自己的姓名 .这个环节很重要,若不设置姓名,会出现一些一些意想不到的错误. 二.配置部署jar到本地 修改mvn配置文件settings.xml Win+R输入%MAVEN_HOME%打开maven安装目录,修改本地maven的配置文件settings.xml,找到其中的servers 标签,加入如下

使用Nexus2搭建企业maven仓库(三)

如果我所在的项目没有使用maven,我应该作出一个选择,要不换一个项目,要不促使这个项目使用起maven.有人会问,为什么要用maven?不用maven不也很好的运作吗.这里,只说两点我体会最深的:第一点是管理jar包.这个包含很多含义,比如下载jar包,通过仓库,你只需要输入包名和版本号,立即就可以下载到你本机,而不需要到官网或google上找,如果下载速度慢,随时可以更改仓库地址.另外,项目中jar版本混乱也是常见的,有些隐藏的问题就是由于jar版本引起,并且很难发现.还有,一个项目中n多j

利用github搭建网站

在github上建一个仓库,然后在设置(settings)那github pagessource中选择master branch 在Custom domain处输入自己的github的id(他会自动生成一个用户名.github.io的域名)或者输入自己购买的域名也可以

利用gitHub搭建博客

##1.gitHub Page的的使用我觉得这边博文写的很清楚,方法.步骤.优缺点以及实例,所以就借用一下啦^_^ [搭建一个免费的,无限流量的Blog](http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html)如果要想更简单快捷的生成有逼格的博客,可以参考第2点. ##2.利用jekyll写博客 进入[The Quickest Way to Blog on GitHub Pages](http://jekyllboots

利用nexus搭建私有maven库管理内部lib,get!

1.本文简介 很多时候,我们都是compile的aar或者jar,或者项目内的module.但是有没有发现不方便?如果某个人改了公共库里的代码,要么把aar或者jar重新拷贝新的发送过来.如果是module似乎没事,直接在module改动即可,然后从git上继续pull代码即可.但是如果多个项目怎么办,都引用同一个公共lib,此时还是得多个项目都改动module.本文就是介绍多人多项目的情况下,如何共同使用同一个lib,做到一处改动,多项目同时可更新.鉴于本人在发表文章前一天刚学习如何搭建,如有

搭建局域网maven仓库

第一步: 下载Nexus http://nexus.sonatype.org/downloads/下载最新版本 解压缩到任意目录,我的直接解压到了E盘---------->E:\nexus-2.9.0-04 Nexus安装目录总有一个兄弟目录,名为“sonatype-work”.这个目录包含有所有资源库和Nexus的配置信息. 第二步:运行服务器 进入到以下目录位置: E:\nexus-2.9.0-04\bin\jsw 选择对应的系统,我的win8系统需要以管理员身份运行1.install-ne