-
2016-08-15 18:23:04
stackoverflow上 What is a build tool? 的一个回答
什么是构建工具
构建工具是一个把源代码生成可执行应用程序的过程自动化的程序(例如Android app生成apk)。构建包括编译、连接跟把代码打包成可用的或可执行的形式。
基本上构建的自动化是编写或使一大部分任务自动执行的一个动作,而这些任务则是软件开发者的日常,像是:
- 下载依赖
- 将源代码编译成二进制代码
- 打包生成的二进制代码
- 进行单元测试
- 部署到生产系统
为什么要使用构建工具或构建自动化
在小型项目中,开发者往往手动调用构建过程,这样在大型的项目中很不实用,在构建过程中难以跟踪什么需要被构建、按照什么顺序构建以及项目中存在哪些依赖。使用自动化工具会使构建过程更为连续。
各种现有构建工具(只列举了部分)
- For java - Ant,Maven,Gradle.
- For .NET framework - NAnt
- c# - MsBuild.
深入阅读
- Build automation (有中文版,但是不详细)
- List of build automation software
就做了一点微小的工作,谢谢大家。
原文地址
http://stackoverflow.com/questions/7249871/what-is-a-build-tool
更多相关内容 -
什么是构建?
2019-10-10 11:19:58什么是构建? https://www.jianshu.com/p/7a10e5e69275 一直对构建很困惑,究其原因,是源于构建相关的文章,总是伴随着一大堆的构建工具和配置文件。因此,总是未能很确切的理解构建的真正含义。 什么是构建 ...什么是构建?
https://www.jianshu.com/p/7a10e5e69275
一直对构建很困惑,究其原因,是源于构建相关的文章,总是伴随着一大堆的构建工具和配置文件。因此,总是未能很确切的理解构建的真正含义。
什么是构建
构建就是把我们在开发环境写的代码,转换成生产环境的代码。
构建过程
开发环境的代码
- 我们可能会用到
es6、sass、jsx等
,从而需要预编译 - 我们可能忘记写
</div>
,从而需要语法检查,各种lint
,如HTMLlint Csslint eslit
- 我们可能用了
react
,他们有一些依赖,从而需要依赖管理 - 我们会更新代码,从而需要对文件进行版本管理
生产环境的代码
- 我们希望内容能正确的呈现,从而希望生产环境代码生成之前能有单元测试
- 希望资源少且小,从而能更快的完成页面的渲染
综上,构建过程应该包括
预编译、语法检查、词法检查、依赖处理、文件合并、文件压缩、单元测试、版本管理等
。构建工具
比较流行的构建工具用
gulp
和grunt
,具体使用请参考gulp、 grunt。
比较流行打包工具webpack
和parcel-bundler
,具体使用请参考webpack、parcel-bundler。思考
构建工具和打包工具有什么区别呢?
个人理解:构建工具,更注重的是前端的自动化流程,如gulp通过流式的文件管理和定制化的任务管理来实现对前端构建流程的管理。而打包工具更注重打包这一过程,主要包括依赖管理和版本管理。
如果你有不一样的解读,希望能够共同交流。
- 我们可能会用到
-
构建的概念
2021-02-27 19:36:52Make-》Ant-》Maven-》Gradle【什么是构建】构建并不是创建,创建一个工程并不等于构建一个项目。要了解构建的含义我们应该由浅入深的从以下三个层面来看:①纯 Java 代码大家都知道,我们 Java 是一门...【Maven 简介】
Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和依赖管理。Maven 这个单词的本意是:专家,内行。
Make-》Ant-》Maven-》Gradle
【什么是构建】
构建并不是创建,创建一个工程并不等于构建一个项目。要了解构建的含义我们应该由浅入深的从以下三个层面来看:
①纯 Java 代码
大家都知道,我们 Java 是一门编译型语言,.java 扩展名的源文件需要编译成.class 扩展名的字节码文件才能够执行。所以编写任何 Java 代码想要执行的话就必须经过编译得到对应的.class 文件。
②Web 工程
我们可以将未编译的 Web 工程比喻为一只生的鸡,编译好的 Web 工程是一只煮熟的鸡,编译部署的过程就是将鸡炖熟。
生的鸡-》处理-》熟的鸡
动态web工程-》编译、部署-》编译结果
Web 工程和其编译结果的目录结构对比见下图:
③实际项目
在实际项目中整合第三方框架,Web 工程中除了 Java 程序和 JSP 页面、图片等静态资源之外,还包括第三方框架的 jar 包以及各种各样的配置文件。所有这些资源都必须按照正确的目录结构部署到服务器上,项目才可以运行。
所以综上所述:构建就是以我们编写的 Java 代码、框架配置文件、国际化等其他资源文件、JSP 页面和图片等静态资源作为“原材料”,去“生产”出一个可以运行的项目的过程。
-
从jenkins说起,什么是构建
2020-02-10 06:32:36结合maven理解项目的构建写在最前面:最近看到一个将Maven的专栏挺不错的,可以直接看这个:maven专栏
本人小白刚上手写完一个接口,然后大佬们说写完任务之后记得用jenkins构建一下。
那么问题来了:jenkins是啥?构建又是啥意思?突然想起long long ago 自己接触过maven这个概念。
maven是啥?
maven是个项目构建和jar包管理工具。所有被maven管理的项目都有着同样的结构:
比如:src/main/java下放的是Java代码, src/main/resource下放的是配置文件,src/main/test下放的是测试代码,与src同级的是pom.xml,里面管理着这个maven项目所需要的jar包,当然这些jar包来自maven仓库,并以“坐标”的形式被项目引用。
(如果你创建的是个Javaweb项目,那么还会有个src/main/webapp的文件夹,专门用来存放各种资源:如HTML、jsp、js、css等)
更详细的项目结构图如下:
好吧,我列举出来的项目结构并不够准确,更完整的项目结构应该是下图所示的(这图是我从其他博客扣来的):
讲了那么久,还是没有讲到“构建”对不,那么构建是啥意思呢?
一个项目的构建过程通常包括清理、编译、测试、打包、集成测试、验证、部署等
在jenkins上构建项目时,我们写的maven命令是:
clean deploy -Dspring.profiles.active意味着:
mvn clean deploy依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。即:
布署到远程maven私服仓库
deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库 -
区块链开源代码什么意思_区块链可以从开源中学到什么
2020-07-12 00:05:19区块链开源代码什么意思 在从事开源工作的10多年中,我参与了一些具有创新思想的小型项目,这些创意后来发展成为具有牢固社区的大型项目。 我还见证了功能失调的社区如何从项目中汲取能量。 我最近还通过编写项目... -
什么是核心代码模式,什么又是ACM模式?
2021-03-23 09:48:39什么是ACM输入模式呢? 就是自己构造输入数据格式,把要需要处理的容器填充好,OJ不会给你任何代码,包括include哪些函数都要自己写,最后也要自己控制返回数据的格式。 而力扣上是核心代码模式,就是把要处理的... -
构建:什么是构建
2018-03-12 15:44:00构建:什么是构建 http://blog.csdn.net/azureternite/article/details/52213589 构建工具是一个把源代码生成可执行应用程序的过程自动化的程序(例如Android app生成apk)。构建包括编译、... -
什么是低代码开发?
2021-11-09 21:04:42低代码开发是一种通过可视化进行应用程序开发的方法,使具有不同经验水平的开发人员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程序。低代码开发平台使非技术开发人员可不必编写... -
最近很火的低代码开发究竟是什么?
2020-08-07 18:37:08低代码开发(Low-code Development)是一种软件开发方法,只需要很少的代码量甚至无需代码就可以构建应用程序。而让低代码开发实现的载体就是低代码开发平台,它具有简单逻辑和拖放功能的可视化界面,让不具有编码或... -
c++中的编译,构建有什么区别?各是起什么作用?
2020-05-11 14:47:30构建:先把工程中所有源代码编译度成目标文件,再link链接成可执行文件(或者lib、dll,看具体工程)。这其中,如果有源文件在此之前知被单独编译过,这道个文件就不参加编译,它之前编译时产生的目标文件参加link... -
低代码开发是什么?低代码开发平台的优势及好处有哪些?
2020-11-18 19:20:57有关于低代码开发的内容,小编之前也发过不少文章,讲过:为什么越来越多企业选择零代码开发平台?相信也有不少企业在寻求企业管理系统的时候,了解过一些关于低代码开发的片面知识,但了解到的这些知识并不全面。... -
什么是低代码开发?低代码平台有哪些优势?
2022-02-18 16:46:04低代码是一种可视化软件开发方法,通过最少的编码更快地交付应用程序。图形用户界面和拖放功能使开发过程的各个方面自动化,消除了对传统计算机编程方法的依赖。低代码平台使应用程序开发更加自主化,特别是对于没有... -
什么是低代码平台 low-code?
2021-02-02 09:32:01简介:什么是低代码?我们为什么需要低代码?低代码会让程序员失业吗?本文总结了低代码领域的基本概念、核心价值与行业现状,带你全面了解低代码。 一 前言 如果选择用一个关键词来代表即将过去的2020年,我相信... -
什么是低代码开发
2020-04-01 14:17:50随着应用程序开发技术的不断发展,现在开发应用... 什么是低代码开发: 低代码开发是一种通过可视化进行应用程序开发的方法,使具有不同经验水平的开发人员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻... -
ROM是什么 刷ROM是什么意思
2021-07-27 10:33:41手机ROM指的是存放手机固件代码的存储器(常说的刷机也就是指的是重新构建自己想要的ROM),比如手机的操作系统、一些应用程序如游戏等。 在手机中,RAM是指手机内存,对于手机看性能来说,除了看手机处理器就是看内存... -
代码安全 | 什么是OWASP?OWASP十大漏洞解析
2022-03-16 13:21:23OWASP和OWASP十大漏洞有助于保护您的代码免受软件安全漏洞的影响。在这里,我们将分别阐述OWASP的介绍内容以及OWASP十大漏洞的详细内容。 -
构建与编译(Java)
2021-03-05 11:56:20构建和编译有什么区别?相关:编译和构建有什么区别?#1 热门回答(171 赞)"构建"是一个涵盖创建软件"可交付"所需的所有步骤的过程。在Java世界中,这通常包括:生成源(有时)。编译来源。编译测试源。执... -
cmake ..是什么意思
2021-11-02 15:38:02cmake..使用../CMakeLists.txt文件作为起始点在当前目录中生成makefile . ...这样可以方便地保存源代码并在不同的文件夹中构建结果 . 一般语法是:cmake source-dir(当然,还有很多其他开关) . ... -
什么是低代码(Low-Code)?
2020-11-17 15:28:22那么在后疫情时代,究竟需要什么样的新技术,才能真正解放IT生产力,加速社会数字化转型,Make The World Great Again?我认为是低代码(Low-Code)。 -
Maven项目构建(一):什么是Maven?
2018-01-31 16:40:39Maven项目构建(一):什么是Maven? Maven是一个项目构建和项目管理的工具。一、项目构建是什么项目构建可以理解为一个项目从无到有的一系列操作过程。比如写一个简单的Java程序的过程如下:1、创建后缀为.java的... -
ue4主要是做什么用的
2021-01-14 04:42:41ue4主要是做什么用的?UE4,即虚幻4,它是一套为开发实时技术而存在的引擎工具。目前广泛应用于3D建模渲染、游戏开发中。它完善的工具套件以及简易的工作流程能够使开发者快速修改或查看成果,对于代码的依赖性很低... -
伪代码是什么?如何写一个伪代码?
2021-05-26 01:49:53伪代码是经常用于编程...通常,算法是在伪代码的帮助下表示的,因为无论学习什么编程语言或掌握多深的编程知识,程序员都可以解释算法。顾名思义,伪代码是一种错误的代码的表示,即使是具有一些学校级编程知识的外... -
关于构建项目的理解
2019-01-06 17:45:471,什么是构建项目? 前端项目中,项目的构建可以理解为编译,是要将源代码转化成宿主浏览器可以执行的代码,核心是对资源的管理,产出包括JS,CSS,HTML等资源。 项目构建过程一般在脚手架创建初始项目文件之后... -
Python一直提示runfile是什么意思?
2020-12-18 11:11:44展开全部Python一直提示runfile的意思是Python在服务器端执行;Python作为Microsoft公司开发的e68a84e8a2ad3231313335323631343130323136353331333433653962服务器端脚本环境,可用来创建动态交互式网页并建立强大的... -
gradle中的增量构建
2021-02-17 18:59:25在我们使用的各种工具中,为了提升工作效率,总会使用到各种各样的缓存技术,比如说docker中的layer就是缓存了之前构建的image。在gradle中这种以task组合起来的构建工具也不例外,在gradle中,这种技术叫做增量构建... -
.py文件是什么?
2021-01-15 02:13:06Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。然而,Python ... -
软件构建(转)
2018-11-02 09:34:141、什么是构建 你一定知道“构建(construction)”一次在软件开发领域以外的含义。“构建”就是“建筑工人(construction workers)”在建设一栋房屋,一所学校,乃至一座摩天大楼时所做的工作。在你年轻时,可能... -
编程中的脚手架是什么意思?
2018-06-25 10:37:40,用于构建基于数据库的应用。许多MVC框架都有运用这种思想。 程序员编写一份specification(规格说明书),来描述怎样去使用数据库;而由(脚手架的)编译器来根据这份specification生成相应的代码 ,进行增、删、...