使用Maven和Teamcity组织特定于环境的构建

使用Maven和Teamcity组织特定于环境的构建,maven,version-control,teamcity,Maven,Version Control,Teamcity,我们有一个特定于环境的项目。现在,这导致了开发的两个分支,大量的功能重复应用。具有相同名称和不同版本的两个结果工件由TeamCity从两个不同的分支构建并部署到Nexus。我们希望从这两个分支中创建一个开发分支 这个想法很简单:创建一个Maven项目,通过Maven概要文件过滤依赖项和设置。生成的工件将提供一个版本,该版本取决于概要文件。我们将创建两个TeamCity构建,它们将运行相同的Maven命令但具有不同的概要文件,并使用不同的版本构建相同的工件,并且两个构建将从相同的VCS分支运行 对

我们有一个特定于环境的项目。现在,这导致了开发的两个分支,大量的功能重复应用。具有相同名称和不同版本的两个结果工件由TeamCity从两个不同的分支构建并部署到Nexus。我们希望从这两个分支中创建一个开发分支

这个想法很简单:创建一个Maven项目,通过Maven概要文件过滤依赖项和设置。生成的工件将提供一个版本,该版本取决于概要文件。我们将创建两个TeamCity构建,它们将运行相同的Maven命令但具有不同的概要文件,并使用不同的版本构建相同的工件,并且两个构建将从相同的VCS分支运行

对于我们的用例,这是一个正常的、典型的工作设置吗? 基于一个分支有两个构建是否可以,因为目标文件夹等没有冲突?
使用TeamCity同时构建两个版本的同一工件可以吗?

最佳实践是构建单个工件并在不同环境之间进行升级。任何特定于环境的内容都应该是应用程序外部的,并且应该由环境提供。您所描述的问题是测试——您测试此env版本的modified,然后发布此env版本的untested not modified。您最终测试的是与生产构建不同的内容。另外:您所建议的配置文件将非常困难,因为版本是一个更高级别的概念--配置文件存在于pom的版本中。另外:您讨论的不是版本控制--版本控制适用于单个代码库的修订。您谈论的是针对不同环境的不同实现--这不是版本控制,您不应该试图通过版本控制来解决此问题。请仔细阅读最后的“注意事项”部分。@EngineerDollery,为什么我“针对此环境版本测试已修改的,然后针对此环境发布未测试的未修改版本”?如果我更改了与这两个环境相关的内容,我将使用这两个概要文件重新测试构建。