前言:
像大多数公司一样,我的公司有几个运行时环境和几个发布版本,它们本身由各种 jar 的不同版本组成。
例如,让我们考虑软件 X 的发布版本 1.1、1.2 和 1.3,它们可以部署到开发人员计算机、测试或生产。
software-x-1.1 本身是由 jarA-0.9.1 和 jarB-0.7.5 组成的,而 software-x-1.3 是由 jarA-1.7.31 和 jarB-0.8.1 组成的。
目前我们使用 Spring 的 PropertyPlaceholderConfigurer 来配置运行时变量(例如数据库凭据),但是,属性也会随着发布版本而变化。
我们还使用 Maven 2 POM 版本 4 来指定需要使用我们的代码的哪些版本。我们将 jar 的版本号作为属性放在父 pom 内的配置文件(dev、test、prod)中,然后在所有项目 pom 中引用这些版本号。
截至目前,除了最新版本之外,我们无法指定与给定版本相关的项目版本。此外,我们将运行时配置部署到 SSDM 拾取器,然后由我们的软件构建版本配置和创建定义的服务。
--
问题:
是否有任何程序/工具可以通过仅提供运行时环境和版本号来构建我们的产品?IE“构建 1.1 开发”?
无论如何,我们可以为每个发布版本存储所需的 jar 版本吗?我们目前正在对所有文件进行版本控制,包括父 pom,但仅对父 pom 进行版本控制不会记录哪个发布版本与该父 pom 相关。
我们还能做些什么来进一步自动化构建过程?
例如,如果我们可以在父 pom 中管理运行时配置,这将是朝着正确方向迈出的一步,但这似乎违反了范围。
在这一点上,我们框架之外的任何工具都是不可想象的,但在遥远的将来也不会。
概括:
我们如何才能最大限度地自动化我们的构建过程而不容易出错?