NEXUS 私服搭建
王某某 2017年2月
Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。
利用Nexus你可以只在一个地方就能够完全控制访问和部署在你所维护仓库中的每个Artifact。
下载
wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.13.0-01-bundle.tar.gz
安装配置
nexus 不建议以root用户运行
新添加一个用户:
useradd nexus
passwd nexus
切换到nexus用户
tar -zxvf nexus-2.13.0-01-bundle.tar.gz
解压后会在同级目录中,出现两个文件夹:nexus-2.13.0-01
和sonatype-work
,前者包含了nexus的运行环境和应用程序,后者包含了你自己的配置和数据。
关于目录:
sonatype-work/nexus/storage/central
: 用于放置maven从中央仓库中下载下来的项目
pom.xml中配置到的相关jar包
注意:nexus默认的jar包存储位置是:
sonatype-work/nexus/storage/central
由于Central仓库占用存储较大,所以要注意存储位置。
sonatype-work/nexus/storage/thirdparty
: 用于放置自己手动上传的第三方jar包
sonatype-work/nexus/storage/releases
: 用于放置项目deploy后的发布版
运行测试
进入目录 nexus-2.13.0-01
输入nexus可以看到提示
bin/nexus
Usage: bin/nexus { console | start | stop | restart | status | dump }
启动
bin/nexus start
Starting Nexus OSS...
Started Nexus OSS.
查看控制台:
bin/nexus console
访问地址:http://192.168.1.250:8081/nexus
登录默认账号/密码 ==admin/admin123==
设置开机启动
复制nexus 到/etc/init.d/
cp bin/nexus /etc/init.d/
修改文件
vi /etc/init.d/nexus
#修改下面两个配置
#修改为解压缩的目录
NEXUS_HOME="/xxxx/nexus/nexus-2.13.0-01"
RUN_AS_USER=nexus
添加服务并设置为开机启动
chkconfig --add nexus
chkconfig nexus on
systemctl start nexus
systemctl status nexus
配置
- 下载索引
打开 Repositories 将列表中所有Type为proxy 的项目的 Configuration 中的 Download Remote Indexes 设置为True
然后在Central 仓库上右键然后点击 Repair Index 下载中心仓库的索引文件,若干时间后,可以点击下边的 Browse Index 即可看见下载的索引文件
可以通过左侧到任务调度查看任务 - 关于部署
将Releases仓库的Deployment Policy设置为Allow ReDeploy
设置 deployment 账户密码
左侧Security --> Users --> deployment --> 右键Set Password
本地项目配置引用私服
在项目的 pom.xml 中配置私库地址,pom.xml 的下面添加:
<!-- 仓库地址 -->
<repositories>
<repository>
<id>nexus</id>
<name>Nexus Repository</name>
<url>http://192.168.19.250:8081/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!-- 插件地址 -->
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus Plugin Repository</name>
<url>http://192.168.1.250:8081/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<!-- 打包发布 -->
<distributionManagement>
<repository>
<id>releases</id>
<url>http://192.168.19.250:8081/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://192.168.19.250:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
如要部署构建到nexus,需在settings.xml添加认证信息
ID要对得上
<servers>
<server>
<id>releases</id>
<username>deployment</username>
<password>123456</password><!--这个密码就是你设置的密码-->
</server>
<server>
<id>snapshots</id>
<username>deployment</username>
<password>123456</password>
</server>
</servers>
本地Maven使用Nexus
在maven的setting.xml中设置镜像
- 将mirrorOf设置为 * 对所有资源库
所有的请求都将通过私服,包括下载之外都的
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>Mirror all</name>
<url>http://192.168.1.91:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
- 设置profile
如果只配置profile,Maven只会通过Nexus下载构件
<profiles>
<profile>
<id>dev</id>
<repositories>
<repository>
<id>central</id> <!-- 为了覆盖超级POM中央仓库的配置 -->
<url>http://192.168.1.250:8081/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id> <!-- 为了覆盖超级POM中央仓库的配置 -->
<url>http://192.168.1.250:8081/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
激活配置
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
注意:
仓库和插件仓库配置的ID都为central,是为了覆盖超级POM中央仓库的配置,他们的URL已经无关紧要,因为所有的请求都会通过镜像访问私服。配置仓库和插件仓库的主要目的是开启对快照版本下载对支持,当Maven需要下载或发布快照版本构件时它会先检查central看是否支持该类型对构件,得到正面对答复之后再根据镜像匹配规则转发而访问私服仓库。
任务调度
左侧导航栏“Administration”中选择“Scheduled Tasks”
可以打开任务调度面板,在面板中可以看到当前正在运行的任务
添加任务:ADD --> 选择任务类型 --> 配置运行方式
运行方式:
每天
每周
手动等
任务类型:
download indexes 为代理仓库下载远程索引
清空缓存
发布索引
重建索引
reindex repositories 编纂索引
删除快照构件