搭建私服的优点:
(1) 降低中央仓库负荷
(2) 节省外网带宽
(3) 加速Maven构建
(4) 自己部署构件
1. Nexus安装
(1) 下载:http://www.sonatype.org/nexus/,下载包:nexus-2.0.2.war
(2) 安装
A. WAR方式安装Nexus
将nexus-2.0.2.war拷贝至Tomcat的部署目录:C:\Apache-tomcat-7.0.26\webapps下,
启动Tomcat, 进入Tomcat管理首页即可;
浏览器访问地址:http://localhost:8080/nexus
B. Bundle方式安装Nexus
因为Bundle方式的Nexus默认集成了Jetty容器,因此不需要其他第三方Web容器,解压下载的Bundle
方式的Nexus文件,有下面的两个目录:
nexus-webapp-2.0.2:包含Nexus所需要的文件,如启动脚本,依赖JAR等。
sonatype-work:包含Nexus生成的配置文件、日志文件、仓库文件。
WinOS下,进入nexus-webapp-2.0.2/bin/jsw/windows-x86-32运行nexus.bat脚本启动服务。
浏览器访问地址:http://localhost:8081/nexus
备注:
更改访问端口:修改nexus-webapp-2.0.2/conf/plexus.properties
(3) 登录
Nexus默认的管理员及密码:admin/admin123
2. Nexus的仓库与仓库组
Nexus有四种仓库类型:group,hosted,proxy,virtual,仓库格式为:maven2或maven1,仓库属性Policy
为:Release或Snapshot.
3. 配置Maven从Nexus下载构件
(1) 在POM中配置Nexus仓库
<project>
...
<repositories>
<repository>
<id>nexus</id>
<name>Nexus</name>
<url>http://localhost:8081/nexus/content/groups/public/<url>
<release><enabled>true</enabled></release>
<snapshots><enabled>true></enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus</name>
<url>http://localhost:8081/nexus/content/groups/public/<url>
<release><enabled>true</enabled></release>
<snapshots><enabled>true></enabled></snapshots>
</pluginRepository>
</pluginRepositories>
...
</project>
上述配置只对当前项目有效,若需让本机所有Maven项目均使用Mavne私服,应该在setting.xml中进行配置。
(2) 在setting.xml中配置Nexus仓库
<settings>
...
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus</id>
<name>Nexus</name>
<url>http://localhost:8081/nexus/content/groups/public/<url>
<release><enabled>true</enabled></release>
<snapshots><enabled>true></enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus</name>
<url>http://localhost:8081/nexus/content/groups/public/<url>
<release><enabled>true</enabled></release>
<snapshots><enabled>true></enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfiles>
</activaProfiles>
...
</settings>
(3) 配置镜像让Maven只使用私服
<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>
<name>http://central</name>
<release><enabled>true</enabled></release>
<snapshots><enabled>true></enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>http://central</name>
<release><enabled>true</enabled></release>
<snapshots><enabled>true></enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfiles>
</activaProfiles>
...
</settings>
说明:该配置中仓库及插件仓库的id均为central,即覆盖了超级POM中央仓库的配置,他们的ULR可以不做
配置,因为所有请求都会通过镜像访问私服地址。
4. 部署构件至Nexus
(1) 使用Maven部署构件至Nexus
<project>
...
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Releasse Repository</name>
<url>http://localhost:8081/nexus/content/repositories/release</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshots Repository</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
...
</project>
Nexus的仓库对于匿名用户时只读的,为了方便部署,需要在setting.xml配置认证信息:
<settings>
...
<servers>
<server>
<id>nexus-releases></id>
<username>admin</username>
<password>*****</password>
</server>
<server>
<id>nexus-snapshots></id>
<username>admin</username>
<password>*****</password>
</server>
</servers>
...
</settings>
(2) 手动部署第三方构件至Nexus
选择宿主仓库如:3rd Party,在Artifact Upload中上传。
5. 其他私服软件
Apache的Archive和JForg的Artifactory.