利用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 git@github.com: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-10-31 21:53:00

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

Android Studio 将github作为远程maven仓库

github是一样很好用的工具,除了能作为开源项目的搜索工具外,还能用来搭建maven仓库,方便远程的使用.为此,我查阅了一些资料也结合了一些博主的博客,一步步试验最后成功搭建出了这样的maven仓库,在这里我将整个搭建的过程分享给大家. 一.准备 准备好两样必要的工具 git和gradle 1.安装git,直接下载一个 GitHub Desktop for Mac 安装之后,附带着也会安装好git环境 重新启动终端,输入 git --version  如果输出的类似截图的结果的话则git环境配

maven 仓库 使用nexus搭建了私服在局域网另一台电脑上

问题描述 maven 仓库 使用nexus搭建了私服在局域网另一台电脑上 maven 仓库 使用nexus搭建了私服在局域网另一台电脑上,本来正常的,今天要加个依赖,去查找log4j报错 An internal error occurred during: "Repository search". java.lang.OutOfMemoryError: Java heap space 解决方案 刷新下Maven项目,可能是私服地址配置的不对,页可能你加的这个依赖在其它库中,中央仓库里下

Maven学习四之利用Nexus来构建企业级Maven仓库

概述 Nexus是Maven仓库管理器,用来搭建一个本地仓库服务器,这样做的好处是便于管理,节省网络资源,速度快,还有一个非常有用的功能就是可以通过项目的SNAPSHOT版本管理,来进行模块间的高效依赖开发.      发现问题 虽然你可以通过中央仓库来获取你所需要的jar包,但是现实往往是存在很多问题: 问题1 网速慢,你可能需要花很长的时间来下载你所需要的jar 问题2 如果你的公司很大,有几百甚至几千人再用Maven,那么这些人都去通过中央仓库来获取jar,那么这是一个很大的资源浪费.如果

linux 如何利用ISO搭建yum仓库

linux 如何利用ISO搭建yum仓库 作者 digoal 日期 2016-11-12 标签 Linux , iso , yum , repo 背景 在使用Linux时,很多包有依赖关系,所以很多LINUX的发行版本都有自己的仓库管理软件,例如suse , debian, ubuntu , centos , rhel. 等等发行版本,各自有各自的软件仓库管理方法. 以CentOS为例,红帽派系的基本上都使用的是yum仓库管理手段. 使用仓库管理可以方便的安装rpm包,不需要自己挨个去解决依赖问

hexo+github搭建个人免费博客

最近在淘宝逛到一个卖盗版书的店铺,真的是便宜的不要不要的,哈哈. 网上hexo+github的博客教程太多了,我今天就讲讲一下实现小细节和思路吧,都是github上面的issue 看看我搭建的hexo主题的博客,哈哈 开始旅程了 创建一个github站点 可以参考鸿洋大神的如何利用github打造博客专属域名,这篇博文看下来,你就会拥有像我 这样MRwangqi.github.io的链接,在仓库下面放个index.html,就能访问到页面了. 安装node环境 可以参考我的文章weex初体验,这

Android Studio利用GitHub托管项目

自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onLayout源码详尽分析 自定义View系列教程04–Draw源码分析及其实践 自定义View系列教程05–示例分析 自定义View系列教程06–详解View的Touch事件处理 自定义View系列教程07–详解ViewGroup分发Touch事件 自定义View系列教程08–滑动冲突的产生及其处理

win10+hexo+github搭建个人博客

win10+hexo+github搭建个人博客 参考:https://hexo.io/,博客用于记录自己的学习工作历程 参考以下步骤安装 1.搭建环境准备(包括node.js和git环境,gitHub账户的配置) 2.安装 配置Hexo,配置将Hexo与github page结合起来 3.怎样发布文章 主题 推荐 主题 4.Net的简单配置 添加sitemap和feed插件 5.添加404 公益页面 安装并配置环境 win10+Node.js+git+github Node.js下载地址:htt

利用docker搭建LAMP运行环境教程详解_docker

LAMP介绍 LAMP 指的 Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和 PHP(有时也是指 Perl 或 Python) 的第一个字母,一般用来建立 web 服务器. 虽然这些开放源代码程序本身并不是专门设计成同另几个程序一起工作的,但由于它们的免费和开源,这个组合开始流行(大多数Linux发行版本***了这些软件).当一起使用的时候,它们表现的像一个具有活力的解决方案包. 下面介绍如何使用docker来搭建一个包含lamp组件的

[转]Maven如何手动添加jar包到本地Maven仓库

Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供.基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建.报告和文档等步骤.曾是Jakarta项目的子项目,现为独立Apache项目. 大家肯定遇到过想在pom文件中加入自己开发的依赖包,这些包肯定是不是在Maven仓库(http://repo1.maven.org/maven2/)的.那我们怎么将那些不存在Maven仓库中的包加入到本地的Mave