搭建Maven私服环境

265 阅读4分钟

搭建Nexus3Maven私服环境

软件包下载

创建安装目录

  • 在服务器上创建Nexus仓库管理的安装目录
  • 将下载好的安装包上传到服务器自定义的安装目录中
cd /DATA
mkdir nexus

解压安装包

  • 在安装目录中解压Nexus安装包
tar -zxvf nexus-3.25.1-04-unix.tar.gz

配置Nexus

  • 修改Nexus默认端口号:

    • 进入nexus-3.25.1-04文件夹中的etc文件夹
    • 修改Nexus的配置文件nexus-default.properties
    • 修改默认的端口号application-port
cd /DATA/nexus/nexus-3.25.1-04/etc
vi nexus-default.properties
application-port=8081
  • 修改Nexus的内存分配:

    • 进入nexus-3.25.1-04文件夹中的bin文件夹
    • 修改nexus.vmoptions文件
cd /DATA/nexus/nexus-3.25.1-04/bin
vi nexus.vmoptions

启动Nexus

  • Nexus安装包的bin目录中通过命令启动Nexus:
# ./nexus run & 也可以.其中 & 表示后台启动
./nexus start &

访问Nexus

  • 在浏览器中输入地址,进入Nexus页面:
http://localhost:8081
  • 根据提示获取Nexusadmin的登录密码用于登录Nexus:
cd /DATA/nexus3/sonatype-work/nexus3/

vi admin.password
  • 登录成功之后修改密码admin, 进入Nexus系统页面

Nexus系统

创建用户和角色

  • 进入Security-Users页面可以创建私服用户以及新的角色

创建仓库

  • 进入Repository-RepositoriesCreate repository中可以创建仓库

  • 这里创建以下四个仓库:

    • 本地快照仓库: 用于发布的jar包. 比如测试的jar
    • 本地正式仓库: 用于第三方提供的,不需要进行修改的jar
    • 代理仓库: 代理maven仓库
    • 组合仓库: 将上面的本地快照仓库,本地正式仓库和代理仓库合成的一个仓库使用

本地快照仓库

  • 选择maven本地仓库 : Repository - Repositories - Create repository - maven2(hosted)

  • 创建本地快照仓库:

    • Name: 仓库名称snapshot
    • Maven 2 - Version policy: 选择快照Snapshot版本
    • Hosted - Deployment policy: 选择Allow redeploy
  • 点击应用创建成功,会在Repository - Repositories中看到创建的仓库

本地正式仓库

  • 选择maven本地仓库 : Repository - Repositories - Create repository - maven2(hosted)

  • 创建本地正式仓库:

    • Name: 仓库名称release
    • Maven 2 - Version policy: 选择发布Release版本
    • Hosted - Deployment policy: 选择Allow redeploy
  • 点击应用创建成功,会在Repository - Repositories中看到创建的仓库

代理仓库

  • 选择maven代理仓库 : Repository - Repositories - Create repository - maven2(proxy)

  • 创建代理仓库:

    • Name: 代理仓库名称proxy
    • Maven 2 - Version policy: 选择发布Release版本
    • Proxy - Remote storage: 指定代理maven仓库的地址
  • 点击应用创建成功,会在Repository - Repositories中看到创建的仓库

组合仓库

  • 选择maven组合仓库 : Repository - Repositories - Create repository - maven2(group)

  • 创建组合仓库:

    • Name: 组合仓库名称group

    • Group - Member repositories: 在Members中从上到下优先级由高到底

      • 优先寻找本地正式仓库
      • 如果本地正式仓库不存在,寻找本地快照仓库
      • 如果本地快照仓库不存在,寻找代理仓库
  • 点击应用创建成功,会在Repository - Repositories中看到创建的仓库

发布jar包

项目

  • 在本地新建一个maven环境用作maven私服,然后对maven私服环境进行配置
  • 修改settings.xml文件中的本地仓库的地址:
<!-- 自定义maven本地仓库地址 -->
<localRepository>/Users/chova/Documents/Maven/repository</localRepository>
  • 新增servers配置,指定发布版本的账号和密码:
<servers>
	<server>
		<!-- ID是唯一的,用户密码即为Nexus的用户名和密码 -->
		<id>xx-releases</id>
		<username>admin</username>
		<password>admin</password>
	</server>
	<server>
		<!-- ID是唯一的,用户密码即为Nexus的用户名和密码 -->
		<id>xx-snapshots</id>
		<username>admin</username>
		<password>admin</password>
	</server>
</servers>
  • 进入Nexus仓库,获取Repository - Repositories - 仓库的URL
  • 在项目的pom.xml文件中增加上传maven私服的配置:
<!-- 打包上传maven私服 -->
<distributionManagement>
	<repository>
		<!-- 这里的ID名称要和setting.xml中的ID名称保持一致 -->
		<id>xx-releases</id>
		<!-- 发布仓库的URL地址 -->
		<url>http://127.0.0.1:8081/respository/xx-hosted-release/</url>
	</repository>
	<snapshotRepository>
		<!-- 这里的ID名称要和setting.xml中的ID名称保持一致 -->
		<id>xx-releases</id>
		<!-- 发布仓库的URL地址 -->
		<url>http://127.0.0.1:8081/respository/xx-hosted-snapshot/</url>
	</snapshotRepository>
</distributionManagement>
  • 更改IDEA中配置的maven环境为新建的maven私服环境地址
  • 使用Maven中的deploy, 或者deploy命令即可将版本发送到私服中:
mvn deploy
  • 因为创建的项目指定的版本versionSNAPSHOT, 所以自动会到快照版本中,将版本version-SNAPSHOT去掉就可以打包成release版本

jar包

  • 选择上传的仓库地址Upload - xx-hosted-release, 只能选择发布仓库
  • 上传jar包文件,并对相关属性进行命名
  • 上传完成后,可以在Browse中查看上传的jar是否存在

下载jar包

  • mavensettings.xml文件中增加组合仓库的配置:
<servers>
	<server>
		<id>nexus-xx</id>
		<username>admin</username>
		<password>admin</password>
	</server>
</servers>
  • 在maven私服的settings.xml中增加组合仓库的镜像地址:
<mirrors>
	<mirror>nexus-xx</mirror>
	<name>internal nexus repository</name>
	<!-- 组合仓库的地址 -->
	<url>http://127.0.0.1:8081/repository/xx-group</url>
	<mirrorOf>!internal.repo,*</mirrorOf>
</mirrors>
  • maven私服环境的settings.xml文件中配置仓库列表:
<profiles>
	<profile>
		<id>jdk-1.8</id>
		<activation>
			<activeByDefault>true</activeByDefault>
			<jdk>1.8</jdk>
		</activstion>
		<properties>
			<maven.compiler.source>1.8</maven.compiler.source>
			<maven.compiler.target>1.8</maven.compiler.target>
			<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
		</properties>
	</profile>
	<profile>
		<id>nexus-xx</id>
		<!-- 远程仓库列表 -->
		<repositories>
			<repository>
				<id>nexus-xx</id>
				<name>Nexus Central</name>
				<!-- URL地址 -->
				<url>http://127.0.0.1:8081/repository/xx-group/</url>
				<layout>default</layout>
				<!-- 表示可以从仓库中下载release版本 -->
				<releases>
					<enable>true</enable>
				</releases>
				<!-- 表示可以从仓库中下载snapshot版本 -->
				<snapshots>
					<enable>true</enable>
				</snapshots>
			</repository>
		</repositories>
		<!-- 插件仓库列表 -->
		<pluginRepositories>
			<pluginRepository>
				<id>nexus-xx</id>
				<name>Nexus Central</name>
				<url>http://127.0.0.1:8081/repository/xx-group/<url>
				<layout>default</layout>
				<releases>
					<enable>true</enable>
				</releases>
				<snapshot>
					<enable>true</enable>
				</snapshot>
			</pluginRepository>
		</pluginRepositories>
	</profile>
</profiles>

<!-- 需要激活profile标签中的ID才会生效 -->
<activeProfiles>
	<activeProfile>nexus-xx</activeProfile>
	<activeProfile>jdk-1.8</activeProfile>
<activeProfiles>
  • pom.xml中引入依赖jar, 即可导入私服的jar包:
<dependency>
	<groupId>com.oxford</groupId>
	<artifactId>siege-chova</artifactId>
	<version>1.0.1</version>
</dependency>