Fork me on GitHub
Fork me on GitHub

nexus搭建maven私服

为什么要搭建私服

私服不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。通过建立自己的私服,就可以降低中央仓库负荷、节省外网带宽、加速Maven构建、自己部署构建等,从而高效地使用Maven。Nexus也是当前最流行的Maven仓库管理软件。

下载Nexus

最新nexus下载地址:http://www.sonatype.org/nexus/go

Nexus是典型的Java Web应用,它有两种安装包,一种是包含Jetty容器的Bundle包,另一种是不包含Web容器的war包。

安装Nexus

安装JDK1.8

# mkdir /usr/java
# tar zxf /usr/local/jdk-8u73-linux-x64.gz -C /usr/java/
# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_73
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# source /etc/profile

安装Nexus

上传Nexus安装包到/opt目录下。

[root@hadoop33 opt]# mkdir nexus
[root@hadoop33 opt]# tar zxf nexus-2.14.0-01-bundle.tar.gz -C /opt/nexus
[root@hadoop33 opt]# cd nexus/


nexus-2.6.2-01: 该目录包含了Nexus运行所需要的文件,如启动脚本、依赖jar包等。
sonatype-work:该目录包含Nenus生成的配置文件、日志文件、仓库文件等。
其中第一个目录是运行Nexus必须的,而第二个不是必须的,Nexus会在运行的时候动态创建该目录。

启动Nexus

默认端口为8081,如需修改请查看配置文件 conf/nexus.properties
它本身不建议在root用户下使用,如果我们需要在root用户下启动服务,要先配置 bin/nexus 文件中的 RUN_AS_USER=root

[root@hadoop33 nexus]# cd nexus-2.14.0-01/bin/
[root@hadoop33 bin]# ./nexus start

停止 Nexus

[root@hadoop33 bin]# ./nexus stop

访问

启动后访问首页: http://172.16.206.33:8081/nexus/index.html

点击右上角的Login in

登录默认账号/密码 admin/admin123。

如何修改 nexus 账号密码:先停止 nexus,打开 %NEXUS_HOME%/sonatype-work/nexus/conf/security.xml,修改即可。
nexus 的密码采用 SHA1 加密算法 ( 在线加密工具 ),将加密后的 SHA1 串(小写)拷贝覆盖原来的。重启 nexus:./nexus restart。

配置Nexus

Nexus常用功能就是:指定私服的中央地址、将自己的Maven项目指定到私服地址、从私服下载中央库的项目索引、从私服仓库下载依赖组件、将第三方项目jar上传到私服供其他项目组使用。
登录http://172.16.206.33:8081/nexus/index.html,点击左侧菜单栏的“Repositories”。

一般用到的仓库种类是hosted、proxy。Hosted代表宿主仓库,用来发布一些第三方不允许的组件,比如oracle驱动、比如商业软件jar包。Proxy代表代理远程的仓库,最典型的就是Maven官方中央仓库、JBoss仓库等等。如果构建的Maven项目本地仓库没有依赖包,那么就会去这个代理站点去下载,那么如果代理站点也没有此依赖包,就回去远程中央仓库下载依赖,这些中央仓库就是proxy。代理站点下载成功后再下载至本机。一般情况下Maven这个自带的默认仓库一般情况下已经够大多数项目使用了。

  • hosted 类型的仓库,内部项目的发布仓库
  • releases 内部的模块中release模块的发布仓库
  • snapshots 发布内部的SNAPSHOT模块的仓库
  • 3rd party 第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去
  • proxy 类型的仓库,从远程中央仓库中寻找数据的仓库
  • group 类型的仓库,组仓库用来方便我们开发人员进行设置的仓库

maven项目索引

下载Maven项目索引,项目索引是为了使用者能够在私服站点查找依赖使用的功能。

保存后后台会运行一个任务,点击菜单栏的Scheduled Tasks选项即可看到有个任务在RUNNING。 下载完成后,Maven索引就可以使用了,在搜索栏输入要搜索的项,就可以查到相关的信息。例如spring-core

就可以检索出它的相关信息,包括怎么配置依赖信息。我们要想使用这个私服仓库,先在项目pom中配置相关私服信息。

Maven项目配置

在pom.xml文件中指定仓库:

<repositories>
    <repository>
        <id>nexus</id>
        <url>http://172.16.206.33:8081/nexus/content/groups/public/</url>
        <snapshots><enabled>true</enabled></snapshots>
        <releases><enabled>true</enabled></releases>
    </repository>
</repositories>

在pom.xml文件中指定插件仓库:

<pluginRepositories>
    <pluginRepository>
        <id>nexus</id>
        <url>http://172.16.206.33:8081/nexus/content/groups/public/</url>
        <snapshots><enabled>true</enabled></snapshots>
        <releases><enabled>true</enabled></releases>
    </pluginRepository>
</pluginRepositories>

以上的配置使得只有本项目才在私服下载组件。这个Maven项目构建的时候会从私服下载相关依赖。
上面的配置仅仅是在此项目中生效,对于其他项目还是不起作用。如果相对Maven的其他项目也生效的话。需要修改全局的settings.xml文件。

追加激活profile:

<activeProfiles>  
     <activeProfile>central</activeProfile>  
</activeProfiles

之后所有本机的Maven项目就在私服下载组件。