当你需要在团队或组织内部管理和共享软件包、依赖项以及其他构建资产时,搭建一个私有的 Maven 仓库是一个非常有用的举措。Nexus Repository Manager 是一个受欢迎的工具,可以用于创建和管理私有 Maven 仓库。本篇博客文章将指导你如何搭建 Nexus 私服并部署项目,以更有效地管理你的构建过程。
第一步:准备工作
在开始搭建 Nexus 私服之前,确保你已经满足以下要求:
- 安装 Java:Nexus 运行在 Java 虚拟机上,所以确保你的系统已经安装了 Java。你可以使用 OpenJDK 或 Oracle JDK。
- 下载 Nexus:前往 Sonatype 官方网站 下载最新的 Nexus Repository Manager OSS 版本。
- 安装 Docker(可选):如果你想使用 Docker 来运行 Nexus,确保你已经安装了 Docker。Docker 可以让 Nexus 安装和管理变得更加容易。
第二步:安装 Nexus
方式一:手动安装
-
下载 Nexus Repository Manager OSS,并解压缩下载的文件。
-
进入解压后的 Nexus 目录。
-
打开
bin/nexus.vmoptions
文件,可以根据你的需要修改内存分配(选做)。 -
在bin目录下执行以下命令启动 Nexus 服务:
./nexus run
这将启动 Nexus 服务,你可以在浏览器中访问
http://localhost:8081
来配置和管理 Nexus。默认是
8081
端口,可能需要防火墙打开该端口才能访问。
方式二:使用 Docker 安装
如果你使用 Docker,可以通过以下命令来拉取并运行 Nexus:
docker run -d -p 8081:8081 --name nexus sonatype/nexus3
这将在你的机器上启动一个 Nexus 容器。
第三步:配置 Nexus
无论是手动安装还是 Docker 安装,接下来需要进行 Nexus 的基本配置。
- 打开浏览器,访问
http://localhost:8081
(或你配置的端口)。 - 在首次访问时,你需要登录并修改初始管理员密码。
- 在该目录下有初始用户密码,可以cat命令查看,并复制
- 登录,并按照提示修改初始密码
- 创建一个 Maven 仓库:在左侧导航栏中,点击 “Repositories”,然后点击 “Create repository” 来创建一个 Maven2 (hosted) 仓库。这个仓库将用于部署项目。
- 选择Create repository
- 创建maven2(hosted),输入仓库名称,选择类型,修改Allow redeploy,最后点击
Create repository
- 将创建的仓库合到maven-public
- 配置 Maven 设置:在你的项目的
settings.xml
文件中,添加 Nexus 私服的信息,包括 URL 和认证凭证。
-
配置server,id以后需要用到,用户名密码与Nexus一致
<server> <id>my-repository</id> <username>admin</username> <password>123</password> </server> <server> <id>my-releases</id> <username>admin</username> <password>123</password> </server> <server> <id>my-snapshots</id> <username>admin</username> <password>123</password> </server>
-
配置镜像,包括阿里云镜像和私服镜像,根据自己ip地址修改
<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> </mirror> <mirror> <id>my-repository</id> <mirrorOf>*</mirrorOf> <name>my-repository</name> <url>http://192.168.16.128:8081/repository/maven-public/</url> </mirror>
-
配置profile,根据自己ip地址修改
<profile> <id>JDK-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <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> <!--profile 的 id--> <id>nexus</id> <repositories> <repository> <!--仓库 id,repositories 可以配置多个仓库,保证 id 不重复--> <id>nexus</id> <!--仓库地址,即 nexus 仓库组的地址--> <url>http://192.168.16.128:8081/repository/maven-public/</url> <!--是否下载 releases 构件--> <releases> <enabled>true</enabled> </releases> <!--是否下载 snapshots 构件--> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <!-- 插件仓库,maven 的运行依赖插件,也需要从私服下载插件 --> <pluginRepository> <!-- 插件仓库的 id 不允许重复,如果重复后边配置会覆盖前边 --> <id>public</id> <name>Public Repositories</name> <url>http://192.168.201.81:8081/repository/maven-public/</url> <!--是否下载 releases 构件--> <releases> <enabled>true</enabled> </releases> <!--是否下载 snapshots 构件--> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles>
-
Java项目的pom文件中加入配置,根据自己xml的serve,ip修改
<distributionManagement> <snapshotRepository> <id>my-snapshots</id> <url>http://192.168.16.128:8081/repository/my-snapshots/</url> </snapshotRepository> <repository> <id>my-releases</id> <url>http://192.168.16.128:8081/repository/my-releases/</url> </repository> </distributionManagement> <repositories> <repository> <id>nexus</id> <url>http://192.168.16.128:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
mvn deploy
-
在maven管理工具中可以先clean清理,再deploy发布到仓库中。
如果要打包,pom文件中需要引入打包插件<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.6.13</version> </plugin> </plugins> </build>
如果是项目模块中没有启动入口,可以使用下列打包方式
<build> <plugins> <!-- 编译源代码插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> <!-- 打包源代码插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <configuration> <attach>true</attach> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
如果发布成功,可以在Nexus相应的仓库查看到上传的包
第四步:使用 Nexus
现在,你可以使用 Nexus 私服来管理你的项目的依赖关系和构建资产。以下是一些你可以在 Nexus 上执行的常见操作:
- 下载依赖项:在你的项目中,可以通过设置 Maven 的
settings.xml
文件来指向 Nexus,然后 Maven 将从私有仓库中下载依赖项。 - 部署项目:使用 Maven 的
deploy
命令,你可以将你的项目构建部署到 Nexus 仓库中,以便团队其他成员可以访问并使用它。 - 创建代理仓库:Nexus 支持创建代理仓库,以代理远程 Maven 仓库。这可以加快依赖项的下载速度。
- 配置访问策略:你可以设置访问策略,包括授权和匿名访问,以确保私有仓库的安全性。
搭建一个 Nexus 私服并将项目部署到其中是一个重要的步骤,特别是当你需要更好地管理和控制构建过程、依赖关系和安全性时。