一、服务器端安装Nexus
1, Nexus 下载
Nexus 官方下载, 最新版下载: nexus-2.4.0-09-bundle.tar.gz
Nexus war下载: nexus-2.4.0-09.war
2, Nexus 安装
(1) 创建解压文件夹:
mkdir nexus-2.4.0-09
(2) 解压tar.gz文件:
tar zxvf nexus-2.4.0-09-bundle.tar.gz -C nexus-2.4.0-09
注: nexus-2.4.0-09 内有两个文件夹 nexus-2.4.0-09 和 sonatype-work
(3) 拷贝至/opt/目录下:
sudo mv nexus-2.4.0-09 /opt/
3, Nexus 启动
nexus启动是在bin目录下,首先看一下启动/关闭/重启等命令, 输入命令:
/opt/nexus-2.4.0-09/nexus-2.4.0-09/bin/nexus
出现如下选项:
启动nexus:
/opt/nexus-2.4.0-09/nexus-2.4.0-09/bin/nexus start
关闭nexus:
/opt/nexus-2.4.0-09/nexus-2.4.0-09/bin/nexus stop
4, Nexus 验证
启动nexus后,在浏览器输入地址: http://localhost:8081/nexus
出现上述页面,说明配置nexus成功!
问题与解决
[root@localhost bin]# ./nexus start
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************
If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script.
修改vi ./bin/nexus 的 RUN_AS_USER=root
或者
export环境变量中添加 RUN_AS_USER=root
管理员登陆
点击右上角“Log in”, 输入用户名和密码(默认用户名:admin 密码: admin123)登录
修改密码
点击右上角“admin” ——》 Profile ——》 Change Password ——》 修改密码 和 邮箱,如下图:
开启远程索引
新搭建的neuxs环境只是一个空的仓库,需要手动和远程中心库进行同步,nexus默认是关闭远程索引下载,
最重要的一件事情就是开启远程索引下载。登陆nexus系统,默认用户名密码为admin/admin123。
点击左边Administration菜单下面的Repositories,找到右边仓库列表中的三个仓库Apache Snapshots、Codehaus Snapshots、Central,
然后在每一个仓库的configuration下把Download Remote Indexes修改为true。然后在这三个仓库上分别右键,选择Repair Index,这样Nexus就会去下载远程的索引文件。
启用第三方(3th party) Deployment Policy 为 Allow Redeploy
仓库分类(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 :仓库组 :虚拟的概念 可以包含其他的仓库二、开发端配置Maven
1, 下载
官方下载地址: maven_download, 最新版 apache-maven-3.0.5-bin.tar.gz
官方地址: maven
2, 解压
tar zxvf apache-maven-3.0.5-bin.tar.gz (例如安装目录为: /home/homer/Apache-maven/apache-maven-3.0.5)
3, 安装
1) 编辑 /etc/profile
sudo vi /etc/profile
2) 配置
配置maven安装目录:
export MAVEN_HOME=/home/homer/Apache-maven/apache-maven-3.0.5 // 安装目录
export PATH=${MAVEN_HOME}/bin:${PATH}
如下图:
3) 生效
source /etc/profile // 使上面配置生效
4, 验证
命令行输入: mvn -v
如上图, 显示maven版本信息,表示安装成功!
上传jar包到nexus
直接在nexus管理后台上传
直接选中你想要上传到哪个库中,可以设置组。这里以上传pig的jar为例。选择3rd party,然后填写maven的坐标(groupId+artifactId+version)。
我们可以在浏览器中查看是否已经上传成功。这里可以看到已经有pig这个文件夹了。
使用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>
这样我们的工程就上传到了私服中。
可以总浏览器中看到我们刚才上传的这个工程。
从私服下载(引用)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包,则会直接从私服下载,如果没有再去网络上下载。这就是搭建私服的好处.
国内还是使用阿里maven仓库比较快。
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>