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

标签 ant msbuild build build-automation

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

  • 在编写构建脚本时,只需依赖位于
    源代码管理和在工作文件夹中可用,而
    检查来源。不要编写构建脚本
    依赖于未保留在源代码管理中的项目。
  • 如果一个项目包含一组子系统,并且每个子系统都有
    它自己的构建脚本,项目的构建文件应该只是调用
    子系统的构建脚本。此外,这些文件应该导入一个包含编译、测试、打包等目标的通用构建文件。

  • 我见过this post同样,但它在编写任务的方式上有详细说明。如上所述,我需要更多高级指南。

    以下是我从答案中收集的指南:
  • 在干净的环境中运行每个构建。这意味着每个构建脚本都需要一个 clean目标。
  • 构建脚本通常应该包括 compile , packagetest目标。
  • 如果一个产品有不同的开发线(例如 dev , release ),
    他们都应该有相同的构建脚本。但是,不同
    参数应该传递给这些脚本。
  • 在开发线上执行的构建通常包含编译、
    打包、部署和安装步骤。但以发布为基础
    行包括进一步的步骤,例如标记产品和
    生成变更日志/发行说明。
  • 构建脚本也应保留在源代码管理中。
  • 尝试将所有构建信息保留在构建脚本中,而不是在
    持续集成服务器(Bamboo、TeamCity 等)
  • 如果您的构建使用了将来可能会更改的参数(例如
    复制构建结果的网络地址),不要将其硬编码到
    你的构建脚本。相反,使用构建参数来控制它更多
    容易地。
  • 最佳答案

    只是对你上面提到的第二个要点发表评论:

    If a project contains a set of sub-systems and each sub-system has its own build scripts, the build file of the project should just call the build scripts of sub-systems.



    每个子系统都应该有自己的构建文件,但该文件应该导入一个通用的构建文件。通用构建文件将包含编译、测试、包等目标。

    http://ant.apache.org/manual/Tasks/import.html

    子系统构建文件非常简单,不包含重复,只包含特定于该子系统的信息(例如 compile.classpath)。

    关于ant - 在 Ant 或 MSBuild 中编写构建脚本的任何最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7329590/

    相关文章:

    java - 使用ant,查找与正则表达式匹配的文件

    apache-flex - Eclipse中的Ant : silently terminated

    在 vscode 中调试 C# 源代码生成器

    react-native - Expo 在生产版本中未找到 "main"应用程序?

    build - 为 QEMU 构建 TSAN,找不到 longjmp buf

    python - Python 解释器嵌入段错误的最小示例

    java - Ant 更好的方法 <sleep> 而不是跳过它

    ant - Ant 如何给变量赋值并重用它

    excel - 使用 MSBuild 更改 .xla 文件

    visual-studio-2005 - 如何使用 MSBuild 将文件复制到另一个目录?