转载自:http://blog.csdn.net/xiao__gui/article/details/52625660

作为一个Java老程序员,多多少少都会有一些自己写的各种常用代码,如果每写一个项目都把这些代码拷贝一份到新项目比较麻烦的,打成jar包引入到项目会方便很多。如果想让这些jar包能通过Maven引入进项目,那就需要搭建Maven仓库。

说到Maven仓库搭建,很多人第一想到的一般都是Nexus。Nexus的确是非常好的方案,但是总归需要一台服务器,一台服务器需要花钱买和花时间维护,成本比较大。Nexus一般是公司用的比较多,个人不建议使用。

实际上除了Nexus外,还有很多Maven仓库的搭建方案。例如可以将Maven仓库搭建在GitHub等代码托管平台上,免费。甚至也可以搭建在七牛云、又拍云、阿里云对象存储OSS、腾讯云对象存储服务COS等云存储上,加上CDN可以有很快的下载速度,虽然云存储是收费的,但是一般都有免费额度,例如一个月10G流量,通常来说已经很够用了。

本篇博文主要内容是使用HTTP服务器搭建Maven仓库,用于学习Maven仓库搭建原理,并不是想替代Nexus。在本系列接下来的博文中会讲到如何用代码托管平台(如GitHub)、云存储平台(如七牛、阿里云OSS)来搭建Maven仓库。

Maven仓库搭建原理

首先,Maven有个中央仓库:http://repo.maven.apache.org/maven2/,里面包含很多常用的开源项目的包。

在自己项目的pom.xml文件中加入一个dependency,例如spring框架的一个包:

<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.1.6.RELEASE</version>
</dependency>

Maven会将仓库地址、groupId、artifactId、version四个部分拼接起来,得到最终的jar包下载地址:
http://repo.maven.apache.org/maven2/org/springframework/spring-core/4.1.6.RELEASE/spring-core-4.1.6.RELEASE.jar

当然,除了jar包外还有一些其他需要的文件,具体可以查看目录:
http://repo.maven.apache.org/maven2/org/springframework/spring-core/4.1.6.RELEASE/

如果是自己的或公司内部使用的jar包,在中央仓库肯定是没有的,这就需要配置一个自己的repository,指定包的下载地址。

<repository><id>my-repository</id><url>http://115.159.216.216:8080/</url>
</repository>
...
<dependency><groupId>com.xxg.cloudstorage</groupId><artifactId>cloudstorage</artifactId><version>1.0.0</version>
</dependency>

同理,此时Maven会根据repository配置的url生成文件下载地址:
http://115.159.216.216:8080/com/xxg/cloudstorage/cloudstorage/1.0.0/cloudstorage-1.0.0.jar

HTTP服务器搭建Maven仓库

有了上面的理论基础,用HTTP服务器搭建Maven仓库就不难了,无非是把所需要的文件按照以上规则放到对应的目录下,HTTP服务器提供下载地址。

首先需要一台服务器,再安装一个HTTP服务器软件,如Tomcat、Apache、Nginx等,任选其一即可。

例如使用Java程序员喜闻乐见的Tomcat,使用Tomcat的webapps/ROOT目录作为Maven仓库的文件存放目录。

jar包部署到仓库

如果想把自己的jar包部署到仓库上供自己或别人引用,只有jar文件是不够的,里面上面Spring仓库的目录可以看到除了jar,还有pom、md5、sha1等各种文件,这些文件都可以通过mvn deploy命令来生成。

方法一:手动部署

在项目的pom.xml中添加:

<distributionManagement><repository><id>file-repository</id><url>file://D:\abc</url></repository>
</distributionManagement>

运行mvn deploy命令可以看到在D:\abc目录下生成了目录和各种文件。将整个目录上传到Tomcat的webapps/ROOT,此时在浏览器上访问以下地址即可通过HTTP直接下载jar包:
http://115.159.216.216:8080/com/xxg/cloudstorage/cloudstorage/1.0.0/cloudstorage-1.0.0.jar

方法二:SSH自动部署

如果服务器是Linux服务器,还可以直接通过mvn deploy通过scp方式将整个目录直接传到服务器的Tomcat的webapps/ROOT目录下,省去手动上传文件的步骤。

pom.xml配置服务器地址和文件路径:

<distributionManagement><repository><id>my-server</id><url>scp://115.159.216.216/home/ubuntu/coder/apache-tomcat-8.5.5/webapps/ROOT</url></repository>
</distributionManagement><build><extensions><extension><groupId>org.apache.maven.wagon</groupId><artifactId>wagon-ssh</artifactId><version>2.10</version></extension></extensions>
</build>

在Maven的settings.xml中配置服务器的SSH用户名和密码:

<server><id>my-server</id><username>root</username><password>your-password</password>
</server>

Maven仓库使用

部署完成后,已经可以直接下载jar包,那么就可以在其他项目中通过dependency加入这个包的依赖了。

<repository><id>my-repository</id><url>http://115.159.216.216:8080/</url>
</repository>
...
<dependency><groupId>com.xxg.cloudstorage</groupId><artifactId>cloudstorage</artifactId><version>1.0.0</version>
</dependency>

Maven仓库搭建(一):一台HTTP服务器即可(Tomcat、Apache或Nginx)相关推荐

  1. 两台linux服务器负载均衡代码实现,nginx实现负载均衡,nginx负载均衡确保两台服务器数据保...

    nginx实现负载均衡,nginx负载均衡确保两台服务器数据保 一.准备篇: Nginx 负载服务器: Centos 6.2 IP:192.168.1.93 WEB服务器: Web1:192.168. ...

  2. iis服务器修改端口,Apache、Nginx、IIS服务器修改网站端口教程

    以下分别介绍Apache.Nginx.IIS服务器修改网站端口的基本方法. 一.针对Apache服务器 找到 httpd.conf 文件,一般在 Apache 安装目录的 conf 文件夹下就能看到该 ...

  3. 搭建个人博客:Web服务器的选择 Apache or Nginx ?

    首先,这两个Web服务器 ,各有所长,都可 . 据说,Nginx的性能,更好 . 但是,个人博客,无所谓 . 从稳定性来看,也许选Apache,更好 . 关于这两个服务器的安装部署,文档都写过 . 可 ...

  4. Maven仓库搭建(二):GitHub、又拍云、七牛云存储

    转载自:http://blog.csdn.net/xiao__gui/article/details/52640280 在上一篇博文中,主要介绍了Maven仓库搭建原理,除了Nexus外,随意使用一个 ...

  5. 微信公众号 多台服务器,在多台 Linux 服务器上搭建 Pulsar 集群

    作者:高天赐 编辑:Irene Pulsar 是一个支持多租户的.高性能的消息中间件.上一篇我们介绍了如何在 Mac 上搭建 Pulsar 集群,本文详细介绍如何在 3 台 Linux 服务器上搭建 ...

  6. 一次性同步修改多台linux服务器的密码

    如何一次性修改多台linux服务器的密码,这是个问题, 我给大家提供一个脚本,是前一段我刚刚写的,希望能对大家有所帮助 一 ,   需求:linux环境下运行,需要tcl和expect支持       ...

  7. shell实现批量在多台windows服务器上执行同一命令并获取返回结果

    1.    需求 在对windows服务器的运维当中,如果要查看当前的主机名.资源使用.软件安装情况等,大家是怎么操作呢,是登进去鼠标挨着点击查看,还是通过命令呢?貌似命令的方法比较专业一点.但是,如 ...

  8. Eclipse利用Maven的插件部署web项目到远程tomcat服务器

    使用maven的自动部署功能可以很方便的将maven工程自动打包并且部署到远程tomcat服务器,省去一些繁琐的操作,节省大量时间. 我使用的tomcat版本是8.5,tomcat7和tomcat8都 ...

  9. 为什么云服务器没西南的_去年“双11“我买的那台云服务器

    一.为什么会买云服务器 为什么初学者需要一台云服务器? 从我自己那仅有的一点经验来看, 重点无非这一个词:实践. 细数一下初学者拥有一台云服务器的好处: 学习操作系统.熟悉环境 大部分初学者在本地使用 ...

最新文章

  1. 【CVPR 2020】神经网络架构搜索(NAS)论文和代码汇总
  2. html:(22):认识css样式和css的优势
  3. 网路工程师要不要学mysql_网络工程师要学什么_网络工程师需要的技能
  4. Unity之读取配置表去加载物体
  5. fullcalendar自定义搜索框_高效搜索任意文件,拯救凌乱的电脑桌面!
  6. 协鑫集成为泰国Enmax建立10MW光伏电站
  7. 真的不再使用*狗输入法了,改七七拼音
  8. 2018.12.13 区块链论文翻译
  9. 多线程之间通讯JDK1.5-Lock
  10. 20190912每日一句
  11. PortMap端口映射器(提供下载资源)
  12. PS给人物添加阴影和高光
  13. OpenGL基础48:高度贴图(上)
  14. 潇洒郎: 凯酷84机械键盘win键被锁解决方法
  15. leshan基于OMALightweight M2M(LwM2M)协议的Java实现(入门)
  16. 弹性布局(骰子六个面制作)
  17. 兆易创新携手合肥产投进军12英寸晶圆存储器
  18. 【Vim】基本操作及命令集详解
  19. 嵌入式系统设计---实时系统与嵌入式操作系统
  20. 数据库建模,概念模型、逻辑模型、物理模型的区别和转化

热门文章

  1. python最快的循环方法_【转】【Python效率】五种Pandas循环方法效率对比
  2. 透明轮播原生JavaScript实现
  3. CNN:测试一下YoloV3
  4. 2014 Container技术大会:未来Linux Container会是PaaS平台的核心
  5. 互联网的大数据神话——NoSQL
  6. matlab练习程序(各向异性扩散)
  7. 一文剖析区块链现状:丛林法则下的胜者
  8. 一次合同违约复盘(一)
  9. 【spring data jpa】spring data jpa 中的update 更新字段,如果原字段值为null不处理,不为null则在原来的值上加一段字符串...
  10. centos6.5系统自带python2.6升级到python2.7