Maven仓库
1 用来统一存储所有Maven共享构建的位置就是仓库,根据Maven坐标定义每个构建在仓库中唯一存储路径,大致为:groupId/artifactId/version/artifactId-version.packaging
2 仓库大致分为
1 本地仓库,存储在~/.m2/repository/位置,每个用户只有一个本地仓库
2 远程仓库
1 中央仓库:Maven默认的远程仓库
2 私服:是一种特殊的远程仓库,它是架设在局域网内的仓库
3 镜像:用来替代中央仓库,速度一般比中央仓库快
私服的配置
为什么要配置私服Nexus
- 节省带宽和时间,Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件,但是一个部门的每个人都需要从中央仓库下载,浪费时间和带宽,所以在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库。如图所示。
- 公司内部的项目,构件,基础架构可以放在私服中,供整个部门引用。
- 他还提供了强大的仓库管理功能,占用较少的内存,基于简单文件系统而非数据库。
私服的配置步骤
Bundle安装方式
1 此种方式,系统自带了jetty容器。
2 下载nexue-bundle.zip,也可以去官网下载
3 解压后,得到两个子目录:
1 nexus-2.11.2-06,该目录包含了Nexus 运行所需要的文件,如启动脚本、依赖jar包等。
2 sonatype-work,该目录包含Nexus生成的配置、日志文件、仓库文件等。
3 其中,第一个目录是运行Nexus所必须的,而且所有相同版本Nexus实力所包含的该目录内容都是一样的。
4 第二个目录不是必须的,Nexus会在运行的时候动态创建该目录,不过他的内容对于各个Nexus实例不一样的,因为不同用户在不同机器上使用的Nexus会有不同的配置和仓库内容。
5 当用户需要本分Nexus的时候,默认备份sonatype-work/目录,因为该目录包含了用户特定的内容,而nexus-2.11.2-06目录下的内容是可以从安装包直接获取的。
4 设置环境变量
1 不设置也可以,可以到X:\nexus\nexus-2.11.2-06\bin下找命令nexus.bat
2 设置:找到nexus目录下nexus-2.11.0-02中的bin文件夹,将至bin的目录路径加入到操作系统的path变量中
3 按照如下操作执行命令。
注意:一定要以管理员权限运行cmd
install : 将其安装为windows服务,只需安装一次对应的uninstall
start/restart/stop:安装后即可进行启动/重启/关闭操作
console : 是不安装,每次需要执行时即可运行。
4 如图为运行结果
WAR安装方式(官网已经不支持下载)
1 首先需要一个本地的容器,以tomcat为例
2 将下载的nexus-2.9.0.war拷贝到tomcat的webapp目录下,为了操作方便可以将文件重命名为nexus.war
3 启动tomcat,在地址栏输入http://localhost:8080/nexus即可
4 这时在你的用户目录下有一个名为 sonatype-work/nexus 的文件夹,该文件夹下面存储了Nexus相关的配置文件,以及Nexus仓库的内容,很多人都不愿意存放在这里,可以采用以下方法修改nexus存储地址:
1 新建环境变量:PLEXUS_NEXUS_WORK :D:/nexus(你希望的目录)
2 配置WAR中的 WEB-INF\classes\nexus.properties 文件,如 nexus-work=/nexus 。
Nexus的操作
- 登陆:默认管理员用户:ID:admin ,PWD: admin123
- 仓库介绍
以上几个仓库是nexus预装的仓库(详见注解1)
部署构件至Nexus
1 配置所有构建均从私服下载
在~/.m2/setting.xml中配置如下:
```
<!--此处配置所有的构建均从私有仓库中下载 *代表所有,也可以写central -->
<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>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
2 部署构建到Nexus,包含Release和Snapshot, 在项目根目录中pom.xml中配置:
<distributionManagement>
<repository>
<id>releases</id>
<name>Internal Releases</name> <url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Internal Snapshots</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
3 Nexus的访问权限控制,在~/m2/setting.xml中配置如下:
<!-- 设置发布时的用户名 -->
<servers>
<server>
<id> releases </id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id> snapshots </id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>