从零搭建Maven本地私服和简单使用
来源:互联网 发布:清华大学网络学堂登录 编辑:程序博客网 时间:2024/06/06 08:24
前言:
不知道你对maven中央仓库导入依赖的方法怎么看,反正我是挺不喜欢这种方法的,弄个maven项目简直不要太浪费时间,而且最后你还会发现好多jar包都没有导入.
所以,特地来写篇maven本地仓库的搭建.
通过建立自己的私服,就可以降低中央仓库负荷,节省外网宽带,加速maven构建,自己部署构建等,从而高效的使用Maven
有三种专门的Maven仓库管理软件可以来帮助大家建立私服:Apache的Archiva,JFrog的Artifactory和Sonatype的Nexus.
在此我们介绍Nexus,目前最流行的Maven仓库管理软件
1.Nexus简介
Nexus有开源版和专业版.一下是开源版的一些特性:
- 较小的内存占用(最少仅为28K)
- 基于ExtJs
- 基于Restlet的完全REST API
- 支持代理仓库,宿主仓库和仓库组
- 基于文件系统,不需要数据库
- 支持仓库索引和搜索
- 支持从界面上传Maven构件
- 细粒度的安全控制
2.安装Nexus(JDK建议使用1.7)
Nexus是典型的JavaWeb应用,他有两种安装包,一种是包含Jetty容器的Bundle包,一种是不包含Web的war包
下载地址:nexus下载地址
Buddle自带了Jetty容器,因此用户不需要额外的Web容器就能直接启动Nexus.此处将该方式的安装.
war包的安装只需要放到tomcat等web容器下启动就好了.
Window的安装方式较为简单,此处讲解CentOS的安装.
命令:
#su root //切换到管理员
下载
# wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.11.2-03-bundle.tar.gz
不过还是建议在windows上面下载了然后拖到linux下解压安装
进入配置文件
修改配置文件
# vi nexus.properties
保存命令
按ESC键 跳到命令模式,然后:
:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
之后,回车,ok!
进入以下路径修改成以root启动
修改成以root启动
保存 上面已经说过
启动
./nexus start
启动以后去看启动日志:
日志路径.
出现如上问题,将jdk换成1.7,再次启动.
如果提示权限不够,使用命令chmod 775 nexus.
启动完成没报错就可以在浏览器中输入了:ip:8081/nexus
将nexus设置为开机自启动
#vi /etc/rc.d/rc.local 编辑该文档,在该文档最后一行加上你nexus所在目录路径,然后./nexus start
至此maven本地私服搭建完成.
3.创建Nexus代理仓库
安装完成以后,接下来创建一个阿里的代理仓库.保证你速度快的飞起
其他配置不做描述,有兴趣自己百度.
然后将阿里的代理仓库放入自己的仓库组中.
4.maven项目索引
下载Maven项目索引,项目索引是为了使用者能够在私服站点查找依赖使用的功能
保存后后台会运行一个任务,点击菜单栏的Scheduled Tasks选项即可看到有个任务在RUNNING。 同样,要使用阿里的仓库,也需要右键,repair index,载完成后,Maven索引就可以使用了,在搜索栏输入要搜索的项,就可以查到相关的信息。例如spring-core
5.配置Maven从Nexu下载构件
<!-- 配置相关私服信息指定仓库 --><repositories><repository><id>nexus</id><name>nexus</name><!-- 仓库组所在路径 --><url>http://192.168.0.107:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><!-- 指定插件仓库 --><pluginRepositories><pluginRepository><id>nexus</id><name>nexus</name><url>http://192.168.0.107:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></pluginRepository></pluginRepositories>但是这样的配置只对当前Maven项目有效,在实际应用中,我们往往想要通过一次配置就能让本机所有的Maven项目都能使用自己的Maven私服,这个时候,就要在settings.xml文件里面进行设置
<!-- 配置nexus仓库 --><profile> <id>nexus</id> <repositories> <repository> <id>nexus</id> <name>Nexus</name> <url>http://192.168.0.107:8081/nexus/content/groups/public/</url> <releases><enable>true</enable> </releases> <snapshots><enable>true</enable> </snapshots> </repository> </repositories> <pluginRepositories><pluginRepository><id>nexus</id> <name>Nexus</name><url>http://192.168.0.107:8081/nexus/content/groups/public/</url> <releases><enable>true</enable> </releases> <snapshots><enable>true</enable> </snapshots></pluginRepository> </pluginRepositories> </profile><!-- 激活这几个配置 --><activeProfile><activeProfile>nexus</activeProfile></activeProfile>以上配置已经能让本机所有的Maven项目从Nexus私服下载构建,但是Maven除了从nexus上下载构建以外还会不时的访问中央仓库central,但是我们希望的是所有的Maven下载请求都仅仅通过Nexus,以全面发挥私服的作用.这时候就需要用到Maven镜像配置,可以创建一个匹配任何仓库的镜像,镜像的地址为私服.这样Maven对任何仓库的构件下载请求都会转到私服中.
具体配置:
<mirrors><!-- 让所有请求都走私服 --><mirror> <id>nexus</id> <url>http://192.168.0.107:8081/nexus/content/groups/public/</url> <mirrorOf>*</mirrorOf> </mirror></mirrors><profiles><profile> <id>nexus</id> <repositories> <repository> <id>central</id> <url>http://central</url> <releases><enable>true</enable> </releases> <snapshots><enable>true</enable> </snapshots> </repository> </repositories> <pluginRepositories><pluginRepository><id>central</id><url>http://central</url> <releases><enable>true</enable> </releases> <snapshots><enable>true</enable> </snapshots></pluginRepository> </pluginRepositories> </profile><!-- 激活这几个配置 --><activeProfile><activeProfile>nexus</activeProfile></activeProfile></profiles>可以看到他们的id都是central.也就是说,覆盖了超级POM中央仓库的配置,他们的url已无关紧要,因为所有请求都会通过镜像访问私服地址.
配置仓库及插件的主要目的是开启对快照版本下载的支持,当maven要下载发布版本或者快照版本的构建时,它首先检查central,看该类型的构件是否支持下载,得到正面回答以后,再根据镜像匹配规则转而访问私服仓库地址
6.部署构建至Nexus
日常开发生成的快照版本构件可以直接部署到Nexus中策略为Snapshot的宿主仓库中,项目正式发布的构件则应该部署到Nexus中策略为Realease的宿主仓库中.
在项目的pom.xml中的配置为
<distributionManagement><repository><id>nexus-releases</id><name>Nexus Releases Repository</name><!-- 指定正式版发布的依赖地址 --><url>http://192.168.0.107:8081/nexus/content/repositories/releases/</url></repository><!-- 快照版 --><snapshotRepository><id>nexus-snapshots</id><name>Nexus Snapshots Repository</name><url>http://192.168.0.107:8081/nexus/content/repositories/snapshots/</url></snapshotRepository></distributionManagement>但是Nexus的仓库对于匿名用户是只读的,为了能够部署构建还需要在settings.xml中配置认证信息
<servers><!-- 配置认证信息 --> <server> <id>nexus-releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers>配置完这些以后当你需要发布当前项目时候,只需要使用maven命令
clean deploy
发布成功,然后就可以去私服中看当前项目是否发布成功
时间什么的也是一目了然.
7.手动部署第三方构建至Nexus
某些Java Jar文件(如Oracle)的JDBC驱动,由于许可证的因素,它们无法公开的放在公共仓库,此外还有大量的小型开源项目,他们没有把自己的构件分发到中央仓库,也没有维护自己的仓库,因此无法从公共仓库获得,这时候用户就需要自己将这类构件手动下载到本地,然后通过nexus的界面上传到私服中.
上传完以后你就可以根据上传的坐标在maven中使用它了.
参考资料:
Maven实战
- 从零搭建Maven本地私服和简单使用
- (一)从零搭建maven+spring+mybatis项目之maven安装与本地库设置
- 使用nexus搭建maven仓库(本地私服)
- Maven本地仓库配置和archiva私服搭建
- maven私服搭建和使用
- maven私服搭建和使用
- maven本地私服的搭建
- maven本地私服的搭建
- 【maven基础】maven私服搭建和使用
- 5分钟从零搭建一个maven工程
- 【转载自nimblewind】Maven本地仓库配置和archiva私服搭建
- 使用Nexus搭建Maven本地仓库
- 使用Nexus搭建Maven本地仓库
- 使用Artifactory搭建本地maven仓库
- 使用nexus本地搭建maven私服
- 使用Artifactory搭建本地maven仓库
- 使用Nexus搭建Maven本地仓库
- myeclipse中maven搭建和最简单的使用
- 王道机试第三章总结
- jq 实现 验证码倒计时(前端部分)
- swustoj大整数加法(0434)
- 图论——BZOJ4239 巴士走读
- NOI 2010 能量采集
- 从零搭建Maven本地私服和简单使用
- session(会话)对象
- 使用字节流,字符流FileWriter和BufferedWriter通过复制同一文件,比较它们用时的多少
- 决策树
- 欢迎使用CSDN-markdown编辑器
- 知识点
- gdb重置工程根目录
- Android写入文件到sdcard中
- 学习杂记(三)c语言