【Nexus的安装和配置】
JDK的下载与安装
解压配置环境变量即可使用
export JAVA_HOME=/opt/jdk1.8.0_131
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
#自JDK1.7之后 CLASSPATH 可以不配置
Nexus的下载与安装
下载地址:http://www.sonatype.org/nexus/go/ 下载后的文件:nexus-2.14.4-03-bundle.tar.gz
安装:直接解压到某个目录即可。
sudo tar -zxvf nexus-2.14.4-03-bundle.tar.gz
解压后,会有两个目录:
- nexus-2.14.4-03 :nexus私服管理界面的容器,内部集成了jetty。
- sonatype-work :私服的默认仓库,用于存储索引和组件资源。
Nexus的必要配置
由于Nexus的UI服务默认不可以由root用户启动,所以如果需要用root用户启动需要在/etc/profile目录下添加如下配置:
export RUN_AS_USER=root
NexusUI服务页面的默认端口是8081,如果需要对端口进行修改,可以在${NEXUS_HOME}/nexus-2.14.4-03/conf/nexus.properties文件中修改以下参数:
application-port=8081
手动更新中央仓库索引(该步骤也可以不操作)
由于私服最初搭建的时候没有索引信息,如果让私服自动到中央仓库下载则速度极其慢,可以通过下面的步骤进行手动更新索引。更新之后中央仓库的jar包就可以被查询到了。
下载相关组件
在http://repo.maven.apache.org/maven2/.index/ 中下载
nexus-maven-repository-index.gz
nexus-maven-repository-index.properties
在http://maven.outofmemory.cn/org.apache.maven.indexer/indexer-cli/5.1.0/ 下载
indexer-cli-5.1.0.jar
构建索引
将上面三个文件(.gz & .properties & .jar)放置到同一目录下,运行如下命令
# java -jar indexer-cli-5.1.0.jar -u nexus-maven-repository-index.gz -d indexer
上述命令会在当前目录下生成一个indexer的目录。
更新索引
创建文件夹
mkdir -p {NEXUS_HOME}/sonatype-work/nexus/indexer/central-ctx
将上述indexer目录中的全部内容拷贝过来。
启动Nexus服务
# cd /opt/nexus-2.14.4-03/bin/
# ./nexus start
Starting Nexus OSS...
Started Nexus OSS
停止Nexus服务的命令为
# ./nexus stop
配置Nexus
- 登录Nexus的UI界面,url为http://192.168.174.200:8081/nexus。
- 在页面的右上角点击Log In,输入用户名密码进行登录:admin/admin123。
- 点击左侧菜单的Repositories,其中Public Repositories就是我们需要使用的私服仓库。
- 点击Public Repositories。在下面的Configuration选项卡中可以配置该库中包含的其他仓库。左侧列表代表私服仓库中包含的仓库,会根据先后顺序使用其中的仓库。右侧列表代表可用的仓库列表。在Browse Index选项卡中可以看到当前私服的索引情况。在Browse Storage选项卡中可以看到私服中已经存储的jar包情况。
通过私服下载组件
使用私服下载组件(适用于内网环境)
在${MAVEN_HOME}/conf目录和C:\Users${用户名}.m2目录的settings.xml文件的<mirrors></mirrors>标签中添加如下内容:
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.186.2:8081/nexus/content/groups/public/</url>
</mirror>
- 其中url的地址为Nexus私服UI界面中
- Repositories仓库里Public Repositories对应的url。
使用阿里云下载组件(适用于外网环境)
如果在外网环境下,无法连接到公司的服务器,这时候可以用阿里云作为镜像,其下载速度要远高于国外的中央仓库。配置阿里云仓库需要在上述配置文件位置添加如下内容:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<mirrorOf>central</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
向Nexus私服发布组件的必要配置
向私服发布我们自己的jar包或者war包,需要配置工程的pom.xml文件和本地maven的settings.xml。 配置工程的pom.xml文件
在需要发布到私服的工程的pom文件中,添加以下内容。
<distributionManagement>
<snapshotRepository>
<id>snapshots</id> <!-- 需要与settings.xml文件中一致 -->
<name>Snapshot</name>
<url>http://192.168.174.110:8081/nexus/content/repositories/snapshots/</url>
<uniqueVersion>true</uniqueVersion>
</snapshotRepository>
<repository>
<id>releases</id> <!-- 需要与settings.xml文件中一致 -->
<name>Release</name>
<url>http://192.168.174.110:8081/nexus/content/repositories/releases/</url>
</repository>
</distributionManagement>
需要注意的是,我们的pom.xml文件中会有下面这样一项配置:
<groupId>yuhaiyang</groupId>
<artifactId>epoch-utils-common</artifactId>
<packaging>jar</packaging>
<version>1.0</version> <!--也可能为:<version>1.0-SNAPSHOT</version> -->
- 其中groupId和artifactId将会是发布到私服后的包路径
- packaging是打包方式
- version中是包的版本。如果version版本号包括-SNAPSHOT则该包会被发布到spapshots仓库,否则会被发布到releases仓库。
配置maven的settings.xml文件 发布我们自己的包到私服需要通过认证,且使用专门的发布用户。在Nexus中默认的具有发布权限的用户是deployment,为了能使我们的包顺利发布,需要在settings.xml文件的标签中添加以下内容:
<server>
<id>releases</id> <!-- 与pom.xml中配置的id一致 -->
<username>deployment</username>
<password>deployment123</password>
</server>
<server>
<id>snapshots</id> <!-- 与pom.xml中配置的id一致 -->
<username>deployment</username>
<password>deployment123</password>
</server>
其中密码可以在Nexus的UI界面上进行修改。
将工程部署到私服上
在编译工具上对工程执行deploy命令,就可以将工程部署到私服供其他组件使用了。
其他组件需要使用该工程的包的时候,只需要在pom.xml文件中添加相应的依赖即可在私服中下载。