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. imx:MfgTool

    MfgTool使用方法: MfgTool很妖,写进去的img的名字一定要符合配置文件里面的命名标准. 具体要参见:        MFG_TOOL\Profiles\Linux\OS Firmware ...

  2. 从零开始写驱动——vfd专用驱动芯片HT16514并行驱动程序编写

    前言 一直看别人搞的 vfd 很漂亮,前段时间淘了个 vfd 模块来,但没有模块资料,还好芯片没有打磨的,良心商家啊.周末抽空来研究一下这个东西. 从零开始 打开外壳 测试线路 查看芯片是 HT165 ...

  3. BZOJ 1218: [HNOI2003]激光炸弹( 前缀和 + 枚举 )

    虽然source写着dp , 而且很明显dp可以搞...但是数据不大 , 前缀和 + 枚举也水的过去..... -------------------------------------------- ...

  4. android screenOrientation

    Activity: android:screenOrientation 横(landscape)竖(portrait)屏显示. 如果想让它一直是横屏显示的话,xml:android:screenOri ...

  5. 解决64位系统下IIS 8下Asp+Access网站配置

    一.IIS7的安装 Windows 中IIS8是默认不安装的,所以在安装完windows 8,之后如果需要安装IIS8的话,就要自己动手了. 安装的步骤为:开始>控制面板>程序>打开 ...

  6. 使用CarrierWave上传图片时,多版本文件名的统一

    第一次使用CarrierWavewe做上传,不能不说,虽然Rails已经把上传变得超简单了,而CarrierWave则是把上传变成了一种享受,特别是做图片上传,现在这年代,图片展示平台已经不仅仅是电脑 ...

  7. Linux 动态库剖析

    进程与 API 动态链接的共享库是 GNU/Linux® 的一个重要方面.该种库允许可执行文件在运行时动态访问外部函数,从而(通过在需要时才会引入函数的方式)减少它们对内存的总体占用.本文研究了创建和 ...

  8. RFID介绍及电子标签成本预估

    What is RFID • RadioFrequencyIdentification, (無線射頻識別系統)• 通常是由感測器(Reader)和RFID標籤(Tag)所組成的系統 RFID分類 • ...

  9. javascript 变量 命名规范 变量的作用域

    原文:javascript 变量 命名规范 变量的作用域 大家好,我是小强老师,今天讲解的是变量 变量 小时候我们学过  这个 应用题 :  X+1=2; 问  X 等于几?  答案是 1 对了,很聪 ...

  10. spring注解controller示例

    依赖库 spring 3.0 配置web.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <w ...