繁体   English   中英

什么是构建工具?

[英]What is a build tool?

在过去的 4 年里,我一直在使用 Eclipse(用于 Java)和 Visual Studio Express(用于 C#)进行编程。 提到的 IDE 似乎总是提供程序员可能要求的所有设施(当然与编程有关)。

最近我听说了一种叫做“构建工具”的东西。 我听说它们几乎用于所有现实世界的开发。 它们究竟是什么? 它们旨在解决什么问题? 为什么我在过去四年里从来不需要它们? 它们是一种精简的 IDE 命令行吗?

什么是构建工具?

构建工具是从源代码(例如,Android 应用程序的.apk )自动创建可执行应用程序的程序。 构建包括将代码编译、链接和打包成可用或可执行的形式。

基本上,构建自动化是编写脚本或自动化软件开发人员在日常活动中执行的各种任务的行为,例如:

  1. 下载依赖项。
  2. 将源代码编译成二进制代码。
  3. 打包那个二进制代码。
  4. 运行测试。
  5. 部署到生产系统。

我们为什么要使用构建工具或构建自动化?

在小型项目中,开发人员通常会手动调用构建过程。 这对于大型项目来说是不切实际的,因为很难跟踪需要构建的内容、构建过程中的顺序和依赖关系。 使用自动化工具可以使构建过程更加一致。

各种可用的构建工具(仅命名少数):

  1. 对于 Java - Ant、Maven、Gradle。
  2. 对于 .NET 框架 - NAnt
  3. c# - MsBuild。

如需进一步阅读,您可以参考以下链接:

1.构建自动化

2. 构建自动化软件列表

谢谢。

构建工具是管理和组织构建的工具,在有很多项目的环境中非常重要,尤其是当它们相互连接时。 它们用于确保不同的人在从事不同的项目时不会破坏任何东西。 并确保当您进行更改时,它们也不会破坏任何内容。

您之前没有听说过它们的原因是您之前没有在商业环境中工作过。 在商业环境中,您可能没有遇到过很多东西,尤其是在软件公司工作时。

正如其他人所说,您一直在使用它们,但是,您不必考虑它们,因为您的工作方式可能与通常的商业工作方式不同。

构建工具通常在命令行上运行,要么在 IDE 中,要么与它完全分开。

这个想法是将编译和打包代码的工作与创建、调试等工作分开。

构建工具可以在命令上运行,也可以在 IDE 中运行,两者都由您触发。 在将代码从存储库中检出到干净的构建机器上后,它们也可以由持续集成工具使用。

make 是在 *nix 环境中用于构建 C/C++ 的早期命令工具。

作为 Java 开发人员,最流行的构建工具是 Ant 和 Maven。 两者都可以在 IntelliJ、Eclipse 或 NetBeans 等 IDE 中运行。 它们也可以被 Cruise Control 或 Hudson 等持续集成工具使用。

构建工具通常将源代码转换为二进制文件——它组织源代码、设置编译标志、管理依赖项……其中一些还与运行单元测试、进行静态分析、生成文档集成。

Eclipse 或 Visual Studio 也是构建系统(但更多的是 IDE),对于 Visual Studio,它是底层 msbuild 来解析 Visual Studio 项目文件。

所有构建系统的起源似乎都是著名的“make”。

有不同语言的构建系统:

  1. C++:make、cmake、premake
  2. Java:ant+ivy、maven、gradle
  3. C#: msbuild

通常,构建系统要么使用专有领域特定语言(make、cmake),要么使用 xml(ant、maven、msbuild)来指定构建。 目前的趋势是使用真正的脚本语言来编写构建脚本,比如 premake 用 lua,gradle 用 groovy,使用脚本的好处是灵活得多,也可以让你想出一套标准API(作为构建 DSL)。

这些是您可以完成构建的不同类型的过程。

1.持续集成构建:在这主要是开发人员签入他们的代码,并且在签入之后立即启动构建以构建最近的更改,因此我们应该在检查后立即知道开发人员所做的更改是否有效-in 完成。 这对于较小的项目或项目的组成部分是首选的。 如果多个团队与项目相关联,或者有很多团队。 的开发人员在同一个项目上工作,这种情况变得难以处理,就好像没有“n”一样。 签入和构建在某些点失败 很难追踪所有损坏是由于一个问题还是多个问题而发生的该更改后发生的缺陷。 这些构建的主要好处是我们可以了解特定的签入是否成功。

2. 门控检入构建:在这种类型的检入中,在检入完成后立即启动构建,将更改保留在搁置集中。 在这种情况下,如果构建成功而不是搁置集签入被提交,否则它将不会提交到 Team Foundation Server。 这从持续集成构建中提供了一个稍微好一点的图片,因为只有成功的签入才被允许提交。

3. 每晚构建:这也称为计划构建。 在这种情况下,我们安排构建运行特定时间以构建更改。 上次构建中所有先前未提交的更改都是在此构建过程中构建的。 当我们想要多次签入但不希望每次签入代码时都进行构建时,可以使用这种方法,这样我们就可以有一个固定的时间或时间段来启动构建签入代码的构建。

可以在以下位置找到有关这些构建的更多详细信息。

对构建进行门控检查

持续集成构建

每晚构建

构建过程是使用一些构建工具为任何错误编译源代码并创建构建(项目的可执行版本)的过程。 我们(主要是开发人员)在源代码中进行了一些修改并签入该代码以进行构建过程。 在构建过程之后,它给出了两个结果: 1. 要么构建 PASSES,要么获得项目的可执行版本(构建已准备就绪)。 2. 它失败了,你会得到某些错误并且没有创建构建。

有不同类型的构建过程,例如:1. 每晚构建 2. 门控构建 3. 持续集成构建等。

构建工具帮助并自动化创建构建的过程。

*所以简而言之,构建是预发布格式的软件版本,开发人员或开发团队使用它来通过持续监控他们的产品并在开发过程的早期解决任何问题来获得对其产品最终结果的信心。 *

您一直在使用它们 - IDE 是一种构建工具。 对于命令行,您可以使用诸如make东西。

人们使用命令行工具进行夜间构建之类的事情 - 所以在早上宿醉后,程序员意识到他一直在摆弄最新版本的库的代码不起作用!

“......很难跟踪需要构建的内容” - 构建工具对这一切没有帮助。 你需要知道你想要构建什么。 (引自 Ritesh Gun 的回答)

“我听说它们几乎用于所有类型的现实世界开发”——出于某种原因,软件开发人员喜欢在大公司工作。 他们似乎对在那里工作的每个人都有更不明确的工作指令。

“为什么我过去四年从不需要它们”。 可能是因为你是一个熟练的程序员。

伪,元。 我认为构建工具根本没有提供任何真正的好处。 它只是为了增加由糟糕的公司实践、缺乏方向引起的安全感——糟糕的软件架构领导导致对项目的实际了解不佳。 您永远不必在项目中使用构建工具(用于测试)。 在缺乏软件项目知识的情况下进行随机测试根本没有任何帮助。

你永远不应该在不知道它的目的以及它如何与其他组件一起工作的情况下向项目添加任何东西。 组件可以在功能上分开,但不能一起工作。 (这是我承担的软件架构师的责任)。

如果将 4-5 个组件添加到项目中会怎样。 您添加了第 6 个组件。 连同第一个添加的组件,它可能会搞砸一切。 没有自动装置可以帮助检测到这一点。

除了思考思考之外,没有捷径可走。

然后是从存储库自动下载。 你为什么要这样做? 你需要知道你下载了什么,你添加了什么到项目中。 您如何检测存储库版本的更改? 你得知道。 你不能“自动”任何东西。

如果我们要测试用棍子蒙住眼睛的自行车和婴儿运输工具,然后随意地用棍子四处敲打会怎样。 这似乎是构建工具测试的想法。

很抱歉没有快捷方式https://en.wikipedia.org/wiki/Scientific_methodhttps://en.wikipedia.org/wiki/Analysis

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM