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库中。