Nexus私服
Nexus私服的使用
安装
升级时备份配置文件:sonatype-work/nexus/conf
独立运行版的 端口号配置在conf/plexus.properties
文件的application-port
属性。
独立运行命令:
-
nexus start
-
nexus stop
-
nexus nexus
-
nexus restart
war包丢到容器里。
访问:
admin/admin123
基本概念
仓库类型:
- group
- hosted
- proxy
- virtual
仓库策略(Policy):
- Release
- Snapshot
几个默认的仓库:
- Central:中央库的代理
- Apache Snapshots:Apache的代理
- 3rd Part:第三方库的仓库
- Releases:用户项目的仓库
- Snapshots:用户项目的仓库
创建仓库
创建local仓库
主界面 -> 左边Repositories
-> 右边的Add...
按钮。主要的配置项:
-
Default Local Storage Location:本地软件仓库的路径。为空的话会默认生成为:
sonatype-work/nexus/storage/repository-id/
- Override Local Storage Location:可以配置自定义仓库目录位置。
-
Access Settings:访问控制
- Deployment Policy:只读、不可重复部署、可重复部署。
创建Proxy仓库
- Remote Storage Location
- Download Remote Indexes:是否下载远程仓库索引
- Authentication:过程仓库的认证配置。
创建仓库组
没有Release和Snapshot的区别。选择几个仓库聚合成一个虚拟仓库。
索引
对于代理仓库,打开「Download Remote Indexes」。索引中央仓库需要大量时间,在左边 导航栏的「Scheduled Tasks」中查看后台进程的进度。
对于本地仓库,右击「ReIndex」
使用私服
从私服取得包
当前文件中:
<project> ... <repositories> <repository> <id>nexus</id> <name>Nexus</name> <url>http://localost: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</name> <url>http://localost:8081/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> ... </project>
在setting.xml
中通过Profile机制设定全局的服务器:
<settings> ... <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>nexus</id> <name>Nexus</name> <url>http://localhost: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</name> <url>http://localost:8081/nexus/content/groups/public/</url> <release> <enabled>true</enabled> </release> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <acitveProfile>nexus</acitveProfile> </activeProfiles> ... </settings>
这样会同时使用中央服务器和私服。如果想要禁用中央服务器,可以用一个镜像。镜像 会代替中央服务器:
<settings> ... <mirrors> <mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://localhost:8081/nexus/content/groups/public</url> </mirror> </mirrors> <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>central</id> <url>http://central</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <url>http://central</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <acitveProfile>nexus</acitveProfile> </activeProfiles> ... </settings>
上面因为已经有镜像代替中央服务器,所以原来中央服务器的地址是什么已经不重要了。
通过maven上传到私服
日常快照版本发现到Snapshot仓库,正式发布版本发布到Release仓库中。POM中配置的 例子:
<project> ... <distributionManagement> <repository> <id>nexus-releases</id> <name>Nexus Releases Repository</name> <url>http://localhost:8081/nexus/content/repositories/releases</url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <name>Nexus Snapshots Repository</name> <url>http://localhost:8081/nexus/content/repositories/snapsots</url> </snapshotRepository> </distributionManagement> ... </project>
Nexus仓库一般对匿名用户是只读的,所以还要在settings.xml
加上认证信息:
<settings> ... <servers> <server> <id>nexus-releases</id> <username>admin</username> <passowrd>*****</passowrd> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <passowrd>*****</passowrd> </server> </servers> ... </settings>
手动部署第三方包到Nexus
有些软件包是不能公开的仓库里的,比如ORACLE的驱动。这些东西手动把包放到自己的 私服上去。
选一个local的仓库,比如3rd part
,然后选择下方的「Artifact Upload」选项卡。
确认坐标的方法有两个:
- 如果是通过Maven构建的可以在GAV Definition下拉中选from POM;
- 不然就选择GAV Parameters。
管理权限
用户与权限
已经存在的用户:
- admin / admin123
- deployment / deployment123
- anonymous
重要的角色:
- UI: Basic UI Privileges
- UI: Repository Browser
- UI: Search
- Repo: All Repositories(Read)
- Repo: All Repositories(Full Control)
为项目分配独立的仓库
- 为项目foo建立仓库Foo Snapshot和Foo Release。
- 仓库的具体增删改查操作由Repository Target建立,其实就是一系列正则表达式。
- 左边面板的「Views/Repositories」->「Repository Target」可以看到各种目标。
- 「Security」->「Privileges」下是各种权限,点add。设置仓库、Repository Target。
- 建立一个新的权限。
- 然后建立Role,给角色加上权限。
- 再给用户加上角色。
Nexus任务调度
左边导航栏的 Scheduled Tasks。任务类型有:
- Download Indexes
- Empty trash
- Evict Unused Proxied Items From Repository Caches:删除里长期没用到的包
- Expire Repository Caches:组件过期重新更新
- Publih Indexs
- Purge Nexus Timeline:发布成其他Nexus组件或是m2eclipse可以使用的格式
- Rebuild Maven Metadata Files
- Reindex Repositories
- Remove Snapshots from Repostoriy
- Synchronize Shadow Repository:同步兼容Maven1的仓库