在Ant或MSBuild中编写构建脚本的任何最佳实践

Gup*_*pta 5 ant msbuild build-automation build

我正在尝试使用Ant和MSBuild自动化我的项目(包括java和.net)的构建过程.我已经阅读了它们并知道如何在Ant和MSBuild中编写构建脚本.但我想知道,是否有编写构建脚本的指南或最佳实践?以下是我发现的两个,但我想听听其他开发者的更多信息.

  • 在编写构建脚本时,只需依赖源控件中的项目,并在检出源时在工作文件夹中可用.不要编写依赖于未保留在源代码管理中的项目的构建脚本.
  • 如果项目包含一组子系统,并且每个子系统都有自己的构建脚本,则项目的构建文件应该只调用子系统的构建脚本.此外,这些文件应导入包含目标(如compile,test,package等)的公共构建文件.

我也看过这篇文章,但是在撰写任务的过程中也有详细介绍.如上所述,我需要更高级别的指导方针.

以下是我从答案中收集的指南:

  1. 在干净的环境中运行每个构建.这意味着每个构建脚本都需要一个clean目标.
  2. 构建脚本通常应该包括compile,packagetest目标.
  3. 如果产品具有不同的开发线(例如dev,release),则所有产品都应具有相同的构建脚本.但是,应该将不同的参数传递给这些脚本.
  4. 在开发线上执行的构建通常包含编译,打包,部署和安装步骤.但是在发布行上构建包括进一步的步骤,例如标记产品和生成更改日志/发布说明.
  5. 构建脚本也应该保留在源代码控制上.
  6. 尝试将所有构建信息保留在构建脚本中,而不是在持续集成服务器(Bamboo,TeamCity等)上
  7. 如果您的构建使用的参数将来可能会更改(例如,复制构建结果的网络地址),请不要将其硬编码到构建脚本中.相反,使用构建参数来更容易地控制它.

Dav*_* W. 4

如果您正在构建 VisualStudio 应用程序,那么最好使用msbuildAnt。该msbuild命令将使用开发人员创建的解决方案文件进行构建,并基本上模拟他们所做的相同构建。

如果你真的想自动化一切,请看看Jenkins。它有一个可以执行的插件msbuild,并且每次有人进行更改时都会自动触发构建。我将 fo 和 Ant 与 Jenkins 结合使用msbuild。我使用 进行构建msbuild,然后使用 Ant 收集并压缩所有构建的工件。然后,人们可以直接从 Jenkins 下载构建的工件。

现在,对于 Java 应用程序,您必须使用 Ant。我使用以下指南

  • 每个构建脚本都需要一个clean目标。此目标会删除构建过程中添加的所有文件,将工作目录返回到clean发生之前的状态。
  • 我遵循 Maven 在使用目标名称时所做的操作,因此我的目标是诸如cleancompilepackage之类的名称。
  • 同样遵循 Maven 指南,我所有构建的文件都放置在该target目录中。这样,我的 clean 命令就可以简单地执行 a 操作<delete dir="${target.dir}/>,并干净整洁地清理所有内容。
  • 如果我有子项目,每个子项目都有自己的build.xml文件。我的主build.xml文件只是调用所有子项目的build.xml文件。
  • 使用常春藤。它易于设置且易于使用。您不再遇到将 jar 文件存储在源存储库中或丢失所依赖的 jar 文件版本的问题。
  • 哎呀,如果可以的话,使用 Maven 就可以了。不幸的是,大多数较旧的项目都难以实现其价值。
  • 使用 Jenkins 作为持续构建服务器进行构建。而且,离开该部门的所有构建(UAT、QA 和保护构建)都必须是 Jenkins 构建。
  • 鼓励您的开发人员编写单元测试。事实上,Jenkins 可以执行单元测试并在其构建页面上显示其结果。
  • 使用其他工具,例如 checkstyle、PMD、CPD、Findbugs 和其他代码验证产品。当然,Jenkins 可以运行其中的每一个并显示漂亮的图表,这些图表可用于向您的经理展示您的工作有多努力。