<meta charset="utf-8">
我们知道 snapshots 版本是不稳定的版本,releases是稳定的版本。生产环境与开发环境应该使用不同的仓库来分离。之前说过版本号带有 -snapshots nexus会自动放入snapshots 仓库,反之放入releases。
我们只需要开发环境打包的时候 带上 -snapshots 而生产环境的时候不带就可以做到两个环境的分离。下面来具体说说
1、profiles
maven profiles 的可以定义不同环境的参数变量。

一个profile 代表一个环境。profile 中有一个 properties 参数是一个自定义。它属于全局变量,
在其他地方使用时用${version.suffix} 在项目使用时会进行替换。
在pom.xml 配置全局变量

这样我们的我们的版本就随着 环境的不同而不同了。
在dev 环境中 我们的版本是1.21-SNAPSHOTS
在prod环境中我们的版本是1.2.1
这样我们的生产环境和开发环境的jar包 就分离开了。
在打包的时候 可以加上-P profile.id
例如 mvn deploy -P prod 生产环境
mvn deploy -P dev 开发环境
2、分角色打包
通过profile 我们已经可以实现不同环境使用不同的仓库,但是每个人都有打包的权利依然很难很好的控制版本,尤其是releases 仓库。之前我们说过nexus 的权限控制,这里我们需要将不同环境的人的打包权限控制。例如测试的人员打releases 的包 而开发人员打snapshots 的包。
这里需要创建两个账号 、
一个是开发人员角色(有snapshots 新增的权限)
一个是测试人员角色(有releases 新增的权限)
只有admin 有修改删除的权限。
修改pom.xml其中配置

将要打包到的地址 在profile中配置,
开发人员 maven setting.xml的配置的是开发人员的账号
测试人员 maven setting.xml的配置的是测试人员的账号
这样就可以做到不同环境,不同角色 releases和snapshots的版本控制。
测试人员打包 可以集成在jenkins上
可以参考这篇 https://stackoverflow.com/questions/14694696/jenkins-how-to-deploy-artifacts-to-maven-repo
网友评论