Maven私服nexus

本文记录Java学习过程中遇到的Maven私服nexus~

Nexus是Maven仓库管理器,通过nexus可以搭建maven仓库,同时nexus还提供强大的仓库管理功能,构建搜索功能等。

常用命令:

//nexus安装
nexus.bat install
//nexus卸载
nexus.bat uninstall
//nexus启动
nexus.bat start

常用配置:

# Jetty Section
# nexus的访问端口配置
application-port=8081
# nexus的主机监听配置(不用修改)
application-host=0.0.0.0
# nexus工程目录
nexus-webapp=${bundleBasedir}/nexus
# nexus的Web访问路径
nexus-webapp-context-path=/nexus
# nexus仓库目录
nexus-work=${bundleBasedir}/../sonatype-work/nexus
# nexus运行程序目录
runtime=${bundleBasedir}/nexus/WEB-INF

nexus仓库的类型:

  • hosted:宿主仓库,部署自己的jar到这个类型的仓库,包括releases和snapshot两部分,releases为公司内部发布版本仓库,snapshots为公司内部测试版本仓库;
  • proxy:代理仓库,用于代理远程的公共仓库,如:maven中央仓库,用户连接私服,私服自动去中央仓库下载jar包或者插件;
  • group:仓库组,用来合并多个hosted/proxy仓库,通常会配置自己的maven连接仓库组;
  • virtual:虚拟的,用于兼容maven1.0版本的jar包或者插件。

nexus仓库默认存放在sonatype-work目录,常用的目录如下:

  • central:代理仓库,代理中央仓库;
  • apache-snapshots:代理仓库,存储snapshots构件,代理地址为https://repository.apache.org/snapshots/;
  • central-m1:virtual类型仓库,兼容maven1.0版本的jar包或者插件;
  • releases:本地仓库,存储releases构件;
  • snapshots:本地仓库,存储snapshots构件;
  • thirdparty:第三方仓库;
  • public:仓库组。

将项目发布到maven私服

示例配置(认证相关):

<server>
	<id>releases</id>
	<username>admin</username>
	<password>admin123</password>
</server>
<server>
	<id>snapshots</id>
	<username>admin</username>
	<password>admin123</password>
</server>

示例配置(pom.xml):

<distributionManagement>
	<repository>
		<id>releases</id>
		<url>http://localhost:8081/nexus/context/repositories/releases/</url>
	</repository>
	<snapshotRepository>
		<id>snapshots</id>
		<url>http://localhost:8081/nexus/context/repositories/snapshots/</url>
	</snapshotRepository>
</distributionManagement>

注意:pom.xml中的id需要与setting.xml中配置的id对应。

管理仓库组

nexus中包括很多仓库,hosted中存放的是企业自己发布的jar包及第三方公司的jar包,proxy中存放的是中央仓库的jar,为了方便从私服下载jar包,可以将多个仓库组成一个仓库组,每个工程需要连接私服的仓库组下载jar包。

配置仓库

示例代码(setting.xml):

<profile>
	<id>dev</id>
	<repositories>
		<repository>
			<id>nexus</id>
			<url>http://localhost:8081/nexus/content/groups/public/</url>
			<releases>
				<enabled>true</enable>
			</releases>
			<snapshots>
				<enabled>true</enable>
			</snapshots>
		</repository>
	</repositories>
	<pluginRepositories>
		<pluginRepository>
			<id>public<id>
			<name>public repositories</name>
			<url>http://localhost:8081/nexus/context/groups/public/</url>
		</pluginRepository>
	<pluginRepositories>
</profile>

使用profile定义仓库需要激活才可生效。

<activeProfiles>
	<activeProfile>dev</activeProfile>
</activeProfiles>

标签: none