Maven 2 Maven+;SSDM构建和运行时环境自动化

Maven 2 Maven+;SSDM构建和运行时环境自动化,maven-2,build,springsource-dm-server,Maven 2,Build,Springsource Dm Server,前言: 与大多数公司一样,我的公司拥有多个运行时环境和多个发行版本,这些版本本身由各种JAR的不同版本组成 例如,让我们考虑软件X的版本1.1、1.2和1.3,它们可以部署到开发人员计算机、测试或生产。 软件-x-1.1本身由jarA-0.9.1和jarB-0.7.5组成,但软件-x-1.3由jarA-1.7.31和jarB-0.8.1组成 目前,我们使用Spring的PropertyPlaceHolderConfigure来配置运行时变量(如数据库凭据),但是,属性也会随着发布版本的变化而变化

前言:

与大多数公司一样,我的公司拥有多个运行时环境和多个发行版本,这些版本本身由各种JAR的不同版本组成

例如,让我们考虑软件X的版本1.1、1.2和1.3,它们可以部署到开发人员计算机、测试或生产。 软件-x-1.1本身由jarA-0.9.1和jarB-0.7.5组成,但软件-x-1.3由jarA-1.7.31和jarB-0.8.1组成

目前,我们使用Spring的PropertyPlaceHolderConfigure来配置运行时变量(如数据库凭据),但是,属性也会随着发布版本的变化而变化

我们还使用Maven 2 POM版本4来指定需要使用哪些版本的代码。我们将JAR的版本号作为属性放在父pom内的概要文件(dev、test、prod)中,然后在所有项目pom中引用这些版本号

到目前为止,除了最新版本外,我们无法指定哪个项目版本与给定版本相关。此外,我们将运行时配置部署到SSDM皮卡,然后SSDM皮卡配置并创建由软件的内置版本定义的服务

--

问题:
是否有任何程序/工具可用于仅通过提供运行时环境和版本号来构建产品?IE“构建1.1开发”

我们是否可以为每个发布版本存储所需的jar版本?我们目前正在对所有文件进行版本控制,包括父pom,但仅对父pom进行版本控制并不会记录与该父pom相关的发布版本

我们还可以做些什么来进一步自动化构建过程

例如,如果我们可以在父pom中管理运行时配置,这将是朝着正确方向迈出的一步,但这似乎违反了范围

目前,任何超出我们框架的工具都是不可想象的,但不是在遥远的将来

总结:


我们如何才能在不易出错的情况下最大程度地自动化构建过程?

基于软件X发布版本1.1、1.2和1.3的部分,使用配置文件处理测试、生产等环境之间的差异似乎是正确的方法。
软件本身是另一回事。我假设您正在使用版本控制工具(VCT)来存储开发状态。因此,在编写Software-x-1.1的过程中,您需要更改根pom并定义依赖项(jarA-0.9.1,jarB-0.7.5)。制作一个标签版本1.1。然后继续发布1.2版……在1.3版的开发过程中,您决定更改依赖项(更改为jarA-1.7.31和jarB-0.8.1),这将导致pom或仅更改您的根pom)。也许我忽略了你真正的问题。

如果我总结一下你的问题:你想要管理跨多个环境的版本发布,而发布分发是可执行文件(JAR)以及环境属性的集合。这些可部署发行版的不同版本在不同的阶段传播到diff env,并具有自己的一组env属性,您正在寻找一种方法来拥有一个通用的推出(或者可能是发布过程)来处理所有这些

似乎您遇到的第一个问题是,在传播版本时,您会针对每个环境运行每个版本的构建。如果我没有错的话,你应该先看看你的应用程序架构,看看是否有一种方法可以创建独立于环境的二进制文件,在某些情况下,项目更喜欢将属性作为一个单独的模块,与JAR一起部署,以及一个可以读取文件的属性管理器,因此,您可能有一个名为properties的maven模块,它为每个env属性文件集绑定一个zip。然后,您的deployer脚本可以在运行要提取到某个位置的zip文件时获得一个参数,从该位置可以将属性读入应用程序。通过这种方式,您可以“为每个版本创建一个发行版,其中的内容可以在所有环境中运行”

另外,您发布的版本是否“不是”POM中的版本?如果没有将您的发布版本与POMs对齐,则应执行此操作。i、 e.当您在该版本的开发阶段工作时,POM应该是1.3-SNAPSHOT,当您在发布它时,POM应该在分支中被提升到1.3

对于这类事情,没有一刀切的解决方案,但类似于此的做法确实在很大程度上有所帮助


请务必让我知道我是否正确地解决了您的问题,或者是否最终绕圈子;-)DS.

在开发模块层次结构之外有一个单独的发布/组装模块有意义吗?我正在考虑一个针对软件X的pom,其中列出了此版本中使用的依赖项。但是我不清楚你的情况。我能提供什么来澄清我的问题吗?我很难问,因为情况很复杂。。。