Maven--搭建开发环境(一)

Maven--构建企业级仓库(二)

Maven—几个需要补充的问题(三)

             看到经历的两家公司都在用Maven, 遂想把关于 Maven 的写完整。很久很久以前写了《搭建 Maven 开发环境(一)》,写完客户端,那本篇就来搭建一个 Maven 私服,用到的工具是 Nexus , Nexus 是 Maven 仓库管理器,用到 Maven 的人基本清楚他的优劣,话不多说,看下面文章,读者一定要记住我是在搭建服务器,不是你用的电脑,当提到本地仓库,指的是服务器的本地仓库,不再是你自己的机器了,下面进入正题,开始搭建。

安装Nexus

下载:http://www.sonatype.org/nexus/

安装:安装的方式有很多种,我只讲一种,是用war包形式部署,其他的也非常简单,读者可自行尝试。首先,读者需要下载nexus的war包,这个我相信你应该找的到,下载后,将此war包拷贝到Tomcat的webapps下,就可以了。然后启动Tomcat,在浏览器输入网址:http://localhost:9999/nexus;就可以看到界面了,此处注意端口号,我的Tomcat的端口号是9999,你的你自己知道哦。如果此时你还看不到界面,那说明你的JDK版本和nexus有些冲突,我一般jdk1.6的选择nexus1.8。如果您安装的是最新的版本,那在nexus-2.X.X\bin\jsw\conf\wrapper.conf文件中的wrapper.java.command=D:\Java\jdk1.7.0_05\bin\java.exe。

认识Nexus

读者可先花几分钟时间仔细观察展现在你面前的页面都有哪些东西,接下来我们就开始配置nexus,先登录,点击右上角的logIn,默认用户密码为:admin,admin123,然后我们点击左侧栏Repositories,进入仓库设置,如下图:

再来看右边的画面,右边上半部分是列出来的repository,如下图:

我们先来关注一下Type这一列,有group、hosted、proxy、virtual几种,virtual忽略不说,介绍一下下面几种库的类型:

Proxy:是远程仓库的代理。比如说在nexus中配置了一个centralrepository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用

Hosted:是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在centralrepository是获取不到的,就需要手工上传到hosted里。

Group:是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom(setting)中配置多个地址,只要统一配置group的地址就可以了。

可以看到,Nexus已经建好了几个仓库。这些仓库有代理仓库,宿主仓库等,可以满足代替Maven中央库的功能 。一般应用下,我们就不用自己再去建立仓库了。

配置中央仓库

Maven central是Maven的中央仓库,点击它并选择configuration标签栏,我们会看到下面的页面:

可以看到中央仓库也是一个代理仓库,他代理谁的呢?请看Remotestorage location,这里是远程仓库的地址,为了提高代理速度,你可以修改为国内的镜像地址。默认值是http://repo1.maven.org/maven2/

Override local storage location:在这个选项你可以配置你的Nexus本地仓库的存放地址,用来覆盖其默认的存放地址。

Maven central是一个比较大的代理仓库,一般是没有必要自己创建库的,如果你需要添加的一个代理仓库,那么可以在点击左侧栏里面的Repositories,然后右边的页面点击add-> add proxy repository即可。通常情况下,使用预设的代理仓库已经能够满足大部分项目的需求了,只有在特殊需求的情况下才会参加代理仓库。

Download remote indexes:这里配置是否下载远程索引文件,模式是false,建议配置为true,这样设置以后,Nexus会自动从远程中央仓库下载索引文件,我们便可以通过索引文件来搜索我们需要的构件。这里有个问题,索引更新慢的要死,读者可以采用理想方式,先下载索引包:nexus-maven-repository-index.zip,然后按照此文章照做就可以了。真是土到家了!

中央仓库就是解决大部分jar包的问题,但是我们在实际项目中会分很多模块(后面会讲),会有很多中央库没有的jar包,那怎么来管理呢,接下来我们讲本地仓库的配置(也就是宿主仓库)。

配置宿主仓库(本地仓库)

我们前面讲到类型为hosted的为本地仓库,Nexus预定义了3个本地仓库,分别是Releases,Snapshots, 3rd Party.如下图:

分别讲一下这三个预置的仓库都是做什么用的:

Releases:这里存放我们自己项目中发布的构建,通常是Release版本的,比如我们自己做了一个helloworld的项目,生成的构件为helloworld.war我们就可以把这个构建发布到Nexus的Releases本地仓库。

Snapshots:这个仓库非常的有用,它的目的是让我们可以发布那些非release版本,非稳定版本,比如我们在trunk下开发一个项目,在正式release之前你可能需要临时发布一个版本给你的同伴使用,因为你的同伴正在依赖你的模块开发,那么这个时候我们就可以发布Snapshot版本到这个仓库,你的同伴就可以通过简单的命令来获取和使用这个临时版本.。

3rd Party:第三方库,你可能会问不是有中央仓库来管理第三方库嘛,没错,这里的是指可以让你添加自己的第三方库,比如有些构件在中央仓库是不存在的。比如你在中央仓库找不到Oracle的JDBC驱动,这个时候我们就需要自己添加到3rdparty仓库。

配置Maven仓库组

我们一个项目不止会用到中央仓库,也会用到宿主仓库,因此仓库组把他们做一个整合,对外提供唯一的地址,我们在客户端调用的时候就配置一个地址,很方便。见下图:

注意:1.是从右往左添加,别搞错了;2.仓库的添加顺序直接决定了构件的下载顺序,换句话来说我们应该把需要从中央仓库或者其他远程仓库下载构件的代理仓库添加在最后。

配置代理

此处配置代理,有两个原因:1.好多公司处于安全考虑,用代理上网,而nexus经常需要往mavenrepository中心下载东西,所以需要给nexus设置代理。2.就是你配置的服务器是不能上网的,因此你得让他上网,才能从中央仓库下载东西,具体设置见下图:

到此时,一个企业级的Maven库已经构建完毕,就可以通知各位同事,方便的使用此库啦。至于权限的问题,我就不多说了,您可以看左侧栏Security中的设置。

Maven--构建企业级仓库(二)的更多相关文章

  1. Sonar+Hudson+Maven构建系列之二:迁移Sonar

    摘要:由于昨天在一台机器上安装的东西太多了,导致Linux机器上非常卡,一台Linux负担了jira, fisheye, confluence, sonar, hudson, mysql 等等,本来已 ...

  2. Maven进价:Maven构建系列文章

    Maven:基于Java平台的项目构建.依赖管理和项目信息管理. 1.构建 Maven标准化了构建过程 构建过程:编译.运行单元测试.生成文档.打包和部署 避免重复:设计.编码.文档.构建 2.依赖管 ...

  3. 只要项目是maven构建的,pom.xml中依赖的jar包全都默认去你电脑本地仓库去找

    只要项目是maven构建的,pom.xml中依赖的jar包全都默认去你电脑本地仓库去找

  4. Gitlab+Jenkins学习之路(十二)之Maven的私有仓库Nexus

    1.什么是Nexus? 在前面进行maven项目的构建中,可以看到在构建的过程中需要安装maven的依赖插件,如图: 而在maven的默认配置中是在官网的中央仓库和第三方的maven仓库进行下载,速度 ...

  5. maven 动态版本 aliyun阿里云Maven仓库地址——加速你的maven构建

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  6. Maven实战读书笔记(二):Maven坐标与仓库

    2.1 Maven坐标 Maven坐标是Maven用来表示一个组件依赖的标示. Maven通过下面几个元素定义坐标:groupId.artifactId.version.packaging.class ...

  7. 利用Eclipse中的Maven构建Web项目报错(二)

    利用Eclipse中的Maven构建Web项目 1.错误描述 [INFO] Scanning for projects... [INFO] [INFO] Using the builder org.a ...

  8. 利用Eclipse中的Maven构建Web项目(二)

    利用Eclipse中的Maven构建Web项目 1.新建源文件夹,Java Resources鼠标右键,"New-->Source Folder" 2.新建src/main/ ...

  9. 二:maven构建module

    通常情况下,我们一个项目是需要分多个模块的,这是我们用maven管理项目就需要构建一个多模块的项目: 通常的结构是一个模块中有一个主项目,下面包含多个子项目,如果是web项目则子项目中有一个是java ...

随机推荐

  1. JSP页面中包含文件

    在JSP中,主要有3种功能可以将外部内容包含到JSP文档中jsp:include动作. jsp:include动作允许我们在请求期间将其他页面的输出包含进来.它的主要优点是:在被包含的页面发生更改时, ...

  2. 简单的Coretext 图文混排

    在很多新闻类或有文字展示的应用中现在都会出现图文混排的界面例如网易新闻等,乍一看去相似一个网页,其实这样效果并非由UIWebView 加载网页实现.现在分享一种比较简单的实现方式 iOS sdk中为我 ...

  3. 深入剖析哪些服务是Oracle 11g必须开启的

    这篇文章主要介绍了哪些服务是Oracle 11g必须开启的以及这些服务的详细介绍,需要的朋友可以参考下   成功安装Oracle 11g数据库后,你会发现自己电脑运行速度会变慢,配置较低的电脑甚至出现 ...

  4. JBoss Jopr

    http://rhq.jboss.org/ https://issues.jboss.org/browse/JBPAPP6-947 挺好的网站: http://outofmemory.cn/code- ...

  5. perl5 第三章 操作符

    第三章 操作符 by flamephoenix 一.算术操作符二.整数比较操作符三.字符串比较操作符四.逻辑操作符五.位操作符六.赋值操作符七.自增自减操作符八.字符串联结和重复操作符九.逗号操作符十 ...

  6. webscraping documentation — webscraping documentation

    webscraping documentation - webscraping documentation webscraping documentation¶ Introduction Backgr ...

  7. 关于js闭包是否真的会造成内存泄漏(转载)

    闭包是一个非常强大的特性,但人们对其也有诸多无解.一种危言耸听的说法是闭包会造成内存泄露. 局部变量本来应该在函数退出的时候被解除引用,但如果局部变量被封闭在闭包形成的环境中,那么这个局部变量就能一直 ...

  8. 启动和停止MySQL服务

    1.  启动MySQL服务 启动MySQL服务的命令为: /etc/init.d/mysqld start 命令执行后如图7-5所示,表示启动MySQL服务成功.   (点击查看大图)图7-5  启动 ...

  9. BZOJ 1295: [SCOI2009]最长距离( 最短路 )

    把障碍点看做点(边)权为1, 其他为0. 对于每个点跑spfa, 然后和它距离在T以内的就可以更新答案 ------------------------------------------------ ...

  10. apt-get 命令详解(中文),以及实例

    apt-get 命令详解(中文),以及实例 一,什么的是apt-get 高级包装工具(英语:Advanced Packaging Tools,简称:APT)是Debian及其衍生发行版(如:ubunt ...