maven私服搭建
一、简介
Maven是一个采用纯Java编写的开源项目管理工具, Maven采用了一种被称之为Project Object Model(POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中, 通过该文件Maven可以管理项目的整个生命周期,包括清除、编译,测试,报告、打包、部署等等。目前Apache下绝大多数项目都已经采用Maven进行管理. 而Maven本身还支持多种插件, 可以方便更灵活的控制项目, 开发人员的主要任务应该是关注商业逻辑并去实现它, 而不是把时间浪费在学习如何在不同的环境中去依赖jar包,项目部署等。
maven和ant都是软件构建工具(软件管理工具),maven比ant更加强大,已经取代了ant,jar包的声明式依赖描述。maven有jar包的仓库。svn是一个软件的版本控制工具,是一个协同开发工具。svn的仓库存放的是项目的源码,历史版本的备份,声明每次版本的修改情况。
二、私服搭建场景
有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。
如果某个IP地址恶意的下载中央仓库内容,例如全公司100台机器使用同一个IP反复下载,这个IP(甚至是IP段)会进入黑名单,因此稍有规模的使用Maven时,应该用Nexus架设私服。
三、nexus部署
第一步:下载nexus-webapp-2.6.2.war包,然后拷贝到tomcat下的webapps目录中
第二步:启动tomcat 默认登录账户密码为: admin admin123 ,点击右上角进行登录。
第三步:访问http://localhost:8080/项目名称/
四、 repository
Nexus仓库的默认的地址,nexus-2.1.2\WEB-INF\plexus.properties 中定义的
在Views/Repositories-->Repositories里进行配置, nexus里可以配置3种类型的仓库,分别是proxy、hosted、group
proxy:是远程仓库的代理。比如说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用
Hosted:是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在central repository是获取不到的,就需要手工上传到hosted里
Group:是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了右边那个Repository Path可以点击进去,看到仓库中artifact列表。不过要注意浏览器缓存。
virtual:也是中央仓库镜像,支持M1老版本
- hosted :宿主仓库 ,该仓库属于该公司私有的
1. 3rd part : 第三方的jar包,但是该jar包没有在中心仓库保存,驱动.jar
2. snapshot :测试版本、镜像版本 easyNet.war
3. release : 发行版本
- proxy : 代理仓库 :代理中心仓库的jar包
- public :仓库组 :虚拟的概念 可以包含其他的仓库
五、上传jar包到nexus
5.1 直接在nexus管理后台上传
直接选中你想要上传到哪个库中,可以设置组。这里以上传pig的jar为例。选择3rd party,然后填写maven的坐标(groupId+artifactId+version)。
我们可以在浏览器中查看是否已经上传成功。这里可以看到已经有pig这个文件夹了。
5.2 使用myeclipse上传
在myeclipse中配置maven我在这里就不再说明了,网上有非常多的资料。我们可以在myeclipse中新建一个web项目,命名为:nexusMaven,并为其添加maven支持。在生成的这个maven项目中找到pom.xml,进行如下配置。
- <distributionManagement>
- <!-- 发布到 快照版本的仓库,即 测试版本仓库 -->
- <snapshotRepository>
- <id>snapshots</id>
- <url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/snapshots/</url>
- </snapshotRepository>
- <!-- 发布到 发行版本的仓库中,也可以发布到3rd party 仓库 -->
- <repository>
- <id>releases</id>
- <url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/releases/</url>
- </repository>
- </distributionManagement>
同时需要到我们的maven的conf目录下的settings.xml添加账号密码支持。大约在114行后面的servers中配置:
- <server>
- <id>releases</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
- <server>
- <id>snapshots</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
然后回到我们的myeclipse的项目中,右键这个项目,run as -> maven build ,然后输入deploy进行部署。
这样我们的工程就上传到了私服中。
可以总浏览器中看到我们刚才上传的这个工程。
六、从私服下载(引用)jar包
同样,在前面新建的maven工程中的pom.xml中进行配置。
- <!-- 依赖pig.jar包,存在私服中 -->
- <!-- maven坐标 -->
- <dependency>
- <groupId>pig</groupId>
- <artifactId>pig</artifactId>
- <version>0.12.1</version>
- </dependency>
- </dependencies>
- <!-- 假如没有私服 ,则 本地仓库找不到,则访问中心仓库
- 假如有私服 :访问顺序
- 首先访问本地仓库
- 本地仓库没有,则访问私服仓库
- 私服仓库也没有,则访问中心仓库
- -->
- <!-- 加载的是 第三方项目使用的jar包 -->
- <repositories>
- <repository>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- <id>public</id>
- <name>public</name>
- <url>http://127.0.0.1:8080/nexus-2.6.2/content/groups/public/</url>
- </repository>
- </repositories>
- <!-- 加载的是maven生命周期插件的jar包 -->
- <pluginRepositories>
- <pluginRepository>
- <releases>
- <updatePolicy>never</updatePolicy>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- <id>public</id>
- <name>public</name>
- <url>http://127.0.0.1:8080/nexus-2.6.2/content/groups/public/</url>
- </pluginRepository>
- </pluginRepositories>
总结:使用nexus来搭建maven私有服务器是非常实用的功能,对于maven的环境搭建这里就不再重复啰嗦了。项目组开发人员开发时,只要在项目的pom.xml文件中,添加如下pom.xml信息即可获取私服的jar.如果添加其他的构件时,会先在nexus私服下载好,以后才会下载到本地。以后,如果发现私服已经存在某一jar包,则会直接从私服下载,如果没有再去网络上下载。这就是搭建私服的好处.
相关推荐
- XtraBackup不停机不锁表搭建MySQL主从同步实践
- 记录一个卡了我整整半年的maven问题
- Tomcat安装实例(三)配置虚拟主机 搭建一个博客
- eclipse4.7.0加jdk1.8加tomcat8加maven3.5.3搭建环境,并用maven建一个简单的web项目验证成功
- springBoot+graphql+graphiql 基础工程搭建
- 妹子问我maven是啥?从相亲说起。。
- 使用eclipse写项目时,并使用maven导包后,查看不了源码
- 如何在VMwarevSphereClient中搭建虚拟机
- 用Android studio搭建沃商店SDK任意支付的配置
- IDEA 2020 创建Maven项目
- 【Maven冷知识】java.version
- java学习(二十四)