Maven 构建时,如何配置 Nexus 的地址?
场景描述
平台在创建 Java 构建流水线时,无法配置 Nexus 的地址,可按照下面的操作步骤解决。
前提条件
您使用的 Jenkins 须为平台快速部署并集成的 Jenkins 工具。
解决方法
-
在左侧导航栏中,单击 工具链管理 > 工具链集成。
-
单击 Jenkins 工具卡片。
-
单击 实例 右侧的 实例名称,进入部署详情页面。
-
在下方的 构建节点 区域,找到平台默认的构建节点 Java。
-
单击 更新构建节点,开启 Maven Settings 文件 开关,参考以下示例,修改相关参数并添加代码至 内容 框中:
参数 描述 <servers>
配置 Nexus 的认证信息。 <mirrors>
配置 profiles.profile.repositories.repository.id
和profiles.profile.pluginRepositories.pluginRepository.id
的重定向镜像仓库地址。<profiles>
配置依赖仓库地址和插件仓库地址, profile.id
作为唯一标识。<activeProfiles>
配置 profile.id
启动时生效 profile。<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <pluginGroups></pluginGroups> <proxies></proxies> <servers> <server> <id>nexus-releases</id> <username>admin</username> <password>Nexus12345</password> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <password>Nexus12345</password> </server> </servers> <mirrors> <mirror> <id>nexus-releases</id> <mirrorOf>*</mirrorOf> <url>http://192.168.1.1:31108/repository/maven-public/</url> </mirror> <mirror> <id>nexus-snapshots</id> <mirrorOf>*</mirrorOf> <url>http://192.168.1.1:31108/repository/maven-public/</url> </mirror> </mirrors> <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>nexus-releases</id> <url>http://192.168.1.1:31108/repository/maven-public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> <repository> <id>nexus-snapshots</id> <url>http://192.168.1.1:31108/repository/maven-public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus-releases</id> <url>http://192.168.1.1:31108/repository/maven-public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> <pluginRepository> <id>nexus-snapshots</id> <url>http://192.168.1.1:31108/repository/maven-public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles> </settings>
-
如果构建命令使用
mvn clean deploy
,会将依赖包上传至上面已配置的 Nexus 中,除了上述步骤还需在pom.xml
中配置distributionManagement
,代码示例如下:注意:
-
distributionManagement
被包含在project
参数中。 -
配置
release
库和snapshots
库时,根据 Nexus Repository 版本策略配置,两者的 URL 应不同,并且不能使用group
类型的 Repository(也就是 maven-public)。
<project> <distributionManagement> <repository> <id>nexus-releases</id> <url>http://192.168.1.1:31108/repository/maven-releases/</url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <url>http://192.168.1.1:31108/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement> </project>
-
-
至此,配置完成。若当前项目的版本号的后缀名中带有
-SNAPSHOT
,流水线就会将产物上传到snapshots
库中,其他的会上传到releases
库中。