maven实战(六)使用Nexus创建私服
来源:互联网 发布:做淘宝客服工资怎么样 编辑:程序博客网 时间:2024/05/17 15:40
创建Nexus代理仓库
同样的Add操作选择Proxy Repository,就会看到如下配置界面:
对于代理仓库来说,最重要的是远程仓库的地址,即Remote Storage Location,用户必须在这里输入有效的值。例如中央仓库地址为:https://repo1.maven.org/maven2/。
Download Remote Indexes表示是否下载远程索引,Checksum Policy配置校验和出错时的策略,用户可以选择忽略,记录警告或者拒绝下载,默认选warn。
当远程仓库需要认证的时候,这里的Authentication配置就能派上用场了。
Artifact Max Age默认值为-1,表示构件缓存后就一直保存着,不再重新下载。对于快照版仓库来说,Artifact Max Age默认为1440分钟,表示每隔一天重新缓存。
创建Nexus仓库组
要创建一个仓库组,一样的Add,选择Repository Group,就会看到下图所示配置项:
此图就不用过多解释了,需要注意的是:仓库组所包含的顺序决定了仓库组遍历其所含仓库的次序,因此最好将常用的仓库放到前面,当用户从仓库下载构件的时候,就能尽快访问到包含构件的仓库。
Nexus的索引与搜索构件
Nexus代理了那么多远程仓库,就需要搜索,以Maven中央仓库为例,我们设置索引为true,它就开始下载索引了,下载情况k可以scheduled tasks中看到下载情况,其状态为RUNNING,因为中央仓库有十几万构件,下载需要花费一定的时间,有了索引我们就可以,在左边栏就行搜索了,如下图所示:
该面板除了显示构件的坐标,还包含了一段XML声明,用户可以复制粘贴到项目的POM中。除了简单的关键字搜索,Nexus还提供了GAV搜索、类名搜索和校验和搜索等功能,用户可以单击搜索页面左上角的Advanced Search选择高级搜索功能:
- GAV搜索(GAV Search):允许用户通过设置GroupId、ArtifactId和Version等信息来进行更有针对性的搜索。
- 类名搜索(Classname Search):允许用户搜索包含某个java类的构件。
- 校验和搜索(Checksum Search):允许用户直接使用构件的校验和搜索该构件。
除了下载使用远程仓库的索引,我们也能为宿主仓库和代理仓库建立索引。只需要在仓库上右击,从弹出的快捷菜单中选择Repair index即可,如下图所示:
待索引编纂任务完成后,就能搜索该仓库所包含的构件。
对于宿主仓库来说,Repair Index任务会扫描该仓库所包含的所有构件建立索引。对于代理仓库来说,Repair Index任务会扫描所有缓存的构件建立索引,如果远程仓库也有索引,则下载后与本地的索引合并。对于仓库组来说,Repair Index任务会合并其包含的所有仓库的索引。
配置Maven从Nexus下载构件
首先看下直接配置pom文件的方式,这种方式只能支持一个索引,方式如下:
<project>... <repositories> <repository> <id>nexus</id> <name>Nexus</name> <url>http://localhost: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://localhost:8081/nexus/content/groups/public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled><snapshots> </pluginRepository> </pluginRepositories>...</project>Maven还提供了Profile机制,能让用户将仓库配置放到settings.xml中的Profile中,这样,所有的项目就都能访问了,如下所示:
<settings>... <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>nexus</id> <name>Nexus</name> <url>http://localhost: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://localhost:8081/nexus/content/groups/public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> <activeProfiles>...</settings>该配置中使用了一个id为nexus的profile,这个profile包含了相关的仓库配置,同时配置中又使用activeProfile元素将nexus这个profile激活,这样当执行Maven构件的时候,激活的profile会将仓库配置应用到项目中去。
上述配置已经能让本机所有的Maven项目从Nexus私服下载构件。细心的读者会发现,Maven除了从Nexus下载构件外,还会不时地访问中央仓库central,我们希望的是所有Maven下载请求都仅仅通过Nexus,以全面发挥私服的作用。这是时候就需要借助于之前提到的镜像配置了。可以创建一个匹配任何仓库的镜像,镜像的地址为私服,这样,Maven对任何仓库的构件下载请求都会转到私服中。具体配置如下所示:
<settings> ... <mirrors> <mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://localhost:8081/nexus/content/groups/public</url> <mirror> </mirrors> <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> <repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles> ...</settings>
这里解释下仓库及仓库插件配置,它们的id都为central,也就是说覆盖了超级POM中央仓库的配置,它们的url无关紧要,因为所有的请求都会通过镜像访问私服地址。配置仓库及插件仓库的主要目的是开启对快照版本下载的支持,当Maven需要下载发布版或快照版的时候,它首先检查central,看该类型的构件是否支持,得到正面的回答之后,在根据镜像匹配规则转而访问私服仓库地址。
部署构件至Nexuskey
如果只为代理外部仓库,那么Nexus的代理仓库就已经能够完全满足需要了。对于另一类Nexus仓库——宿主仓库来说,他们的作用是存储组织内部的,或者一些无法从公共仓库获得的第三方构件,供大家下载使用。用户可以配置Maven自动部署构件至Nexus的宿主仓库,也可以通过界面手动上传构件。
使用Maven部署构件至Nexus
日常开发生成的快照版本可以直接部署到Nexus中策略为Snapshot的宿主仓库中,项目正式发布的构件则应该部署到Nexus中策略为Release的宿主仓库中。pom的配置方式如下:
<project> ... <distributionManagement> <repository> <id>releases</id> <name>Releases</name> <url>http://localhost:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>snapshots</id> <name>Snapshots</name> <url>http://localhost:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement> ...</project>Nexus的仓库对于匿名用户是只读的。为了能够部署构件,还需要在settings.xml中配置认证信息,如下所示:
<settings> ... <servers> <server> <id>releases</id> <username>admin</username> <password>*****</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>*****</password> </server> <servers> ...</settings>
手动部署第三方构件至Nexus
某些Java Jar文件(如Oracle)的JDBC驱动,由于许可证的因素,他们无法公开地放到公共仓库中。用户可以下载这些构件然后通过Nexus的界面上传到私服中。方法如下:
首先选择一个宿主仓库如:3rd party,然后在页面下方选择Artifact Upload选项卡。在上传构件的时候,,Nexus要求用户确定其Maven坐标,如果该构件是通过Maven构建的,那么可以在GAV Definition下拉列表选择From POM,否则就选GAV Parameters。用户需要为该构件定义一个Maven坐标。
然后单击Select Artifact(s) to Upload按钮从本机选择要上传的构件,然后单击Add Aritfac按钮将其加入到上传列表中。Nexus允许用户一次上传一个主构件和多个附属构件(即Classifier)。最后,单击页面最下方的Upload Artifact(s)按钮将构将上传到仓库中。
还有一些东西,再开第三篇文章写。
阅读全文
0 0
- maven实战(六)使用Nexus创建私服
- maven实战(五)使用Nexus创建私服
- maven实战(七)使用Nexus创建私服
- Maven实战——使用Nexus创建私服
- Maven实战——使用Nexus创建私服(上)
- Maven 使用Nexus创建私服
- 10 Maven-使用NEXUS创建私服
- Maven笔记8-Maven中使用Nexus创建私服
- Maven实战——实用Nexus创建私服(下)
- nexus 私服的创建和使用 MAVEN
- Maven学习笔记(八):使用Nexus创建私服
- Maven学习总结系列八:使用Nexus创建私服
- maven搭建私服(nexus使用)
- 使用Nexus创建Maven私服
- 使用Nexus创建Maven私服
- Maven+Nexus私服配置创建示例
- 使用Nexus创建私服
- 使用Nexus创建私服
- mysql之skip-name-resolve解决外网链接客户端过慢问题
- 代理模式
- Ubuntu下安装Express框架
- 四种解析XML文件的方法
- 理解c++STL regex_research()
- maven实战(六)使用Nexus创建私服
- Spring框架学习(1)——HelloWorld
- HDU 3697(H) ——Selecting courses(暴力枚举,贪心)
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Android AOP实现模块间通信
- HDU1873 看病要排队【模拟+优先队列】
- jquery给input赋值val(val)
- 实现二叉树的前序/中序/后序递归、非递归遍历
- Ubuntu使用apt-file解决库或者文件缺失依赖