Maven 2 Maven使用CI/Hudson支持为多个环境[产品、测试、开发]生成工件的最佳实践?
我有一个项目需要部署到多个环境中(prod、test、dev)。主要区别在于配置属性/文件 我的想法是使用配置文件和覆盖来复制/配置专门的输出。但是如果我必须用专门的分类器生成多个工件(例如:“my-app-1.0-prod.zip/jar”、“my-app-1.0-dev.zip/jar”),或者我应该创建多个项目,每个环境一个项目,我就陷入了困境Maven 2 Maven使用CI/Hudson支持为多个环境[产品、测试、开发]生成工件的最佳实践?,maven-2,maven,maven-assembly-plugin,Maven 2,Maven,Maven Assembly Plugin,我有一个项目需要部署到多个环境中(prod、test、dev)。主要区别在于配置属性/文件 我的想法是使用配置文件和覆盖来复制/配置专门的输出。但是如果我必须用专门的分类器生成多个工件(例如:“my-app-1.0-prod.zip/jar”、“my-app-1.0-dev.zip/jar”),或者我应该创建多个项目,每个环境一个项目,我就陷入了困境 我应该使用maven assembly插件为每个环境生成多个工件吗? 不管怎样,我需要一次生成所有的轮廓,这样才能避免轮廓不适合。。。仍然感到困惑
我应该使用maven assembly插件为每个环境生成多个工件吗? 不管怎样,我需要一次生成所有的轮廓,这样才能避免轮廓不适合。。。仍然感到困惑的是:( 欢迎提供任何提示/示例/链接
作为一个次要问题,我还想知道如何在CI Hudson/Bambol中实现这一点,以便为所有环境生成并部署这些生成的构件,并将其部署到适当的服务器上(例如:使用SCP Hudson插件)?我将使用
版本
元素(如1.0-SNAPSHOT、1.0-UAT、1.0-PROD)因此,在VCS级别结合配置文件进行标记/分支(针对特定环境,如机器名、用户名密码等),以构建各种工件。我更喜欢将配置文件与应用程序分开打包。这允许您运行完全相同的应用程序并在运行时提供配置。它还允许您在构建时为您不知道需要的环境生成配置文件。例如,CERT
我使用“汇编”工具将每个域的配置文件压缩成命名文件。我们使用配置文件来实现这一点,但我们只有默认配置文件——我们称之为“开发”配置文件,上面有配置文件,我们有“发布”配置文件,其中不包括配置文件(以便在安装应用程序时正确配置它们) 我会使用概要文件来完成这项工作,如果您需要部署它,我会将概要文件附加到工件名称中。我认为这与Pascal的建议有些相似,只是您将使用概要文件而不是版本
PS:我们只提供开发/发布配置文件的另一个原因是,每当我们为UAT或PROD发送某个内容时,它都已发布,因此如果有bug,我们可以跟踪应用程序发布时代码的状态——在SVN中标记它比从提交历史记录中查找它的状态更容易。我有这个确切的问题去年夏天的情景 最后,我为每个更高的环境使用了带有分类器的配置文件。默认配置文件是“无害”开发构建。我有一个DEV、INT、UAT、QA和PROD配置文件 我最终在Hudson中定义了多个作业来生成特定于区域的工件 我会做的一件不同的事情是,以稍微不同的方式构建项目,使特定于区域的构建在模块化的主项目之外。那就是,它只会为每个特定构建引入最新的工件,而不是为每个区域重建整个项目
事实上,当我设置作业时,QA和PROD作业总是设置为基于标签构建。显然,这是您将根据部署时的特定工作场所规则定制的内容。我们使用以下方法实现了一个m2插件来构建final.properties:
- 从common.properties读取公共的、不受环境影响的设置
- 从dev.properties、test.properties或production.properties读取特定的环境感知设置,从而在必要时覆盖默认值
- 按照给定顺序读取文件后,最终的.properties文件将与properties实例一起写入磁盘
- 此类.properties文件是根据目标环境绑定的文件