构建工具要记住

简介: 《基础》

一、构建工具的作用

构建一个项目通常包含了依赖管理、测试、编译、打包、发布等流程,构建工具可以自动化进行这些操作,从而为我们减少这些繁琐的工作。

其中构建工具提供的依赖管理能够可以自动处理依赖关系。例如一个项目需要用到依赖 A,A 又依赖于 B,那么构建工具就能帮我们导入 B,而不需要我们手动去寻找并导入。

在 Java 项目中,打包流程通常是将项目打包成 Jar 包。在没有构建工具的情况下,我们需要使用命令行工具或者 IDE 手动打包。而发布流程通常是将 Jar 包上传到服务器上。

二、Java 主流构建工具

Ant 具有编译、测试和打包功能,其后出现的 Maven 在 Ant 的功能基础上又新增了依赖管理功能,而最新的 Gradle 又在 Maven 的功能基础上新增了对 Groovy 语言的支持。


Gradle 和 Maven 的区别是,它使用 Groovy 这种特定领域语言(DSL)来管理构建脚本,而不再使用 XML 这种标记性语言。因为项目如果庞大的话,XML 很容易就变得臃肿。

例如要在项目中引入 Junit,Maven 的代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>jizg.study.maven.hello</groupId>
   <artifactId>hello-first</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <dependencies>
          <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>4.10</version>
               <scope>test</scope>
          </dependency>
   </dependencies>
</project>

而 Gradle 只需要几行代码:

dependencies {
    testCompile "junit:junit:4.10"
}

三、Maven

概述

提供了项目对象模型(POM)文件来管理项目的构建。

仓库

仓库的搜索顺序为:本地仓库、中央仓库、远程仓库。

  • 本地仓库用来存储项目的依赖库;
  • 中央仓库是下载依赖库的默认位置;
  • 远程仓库,因为并非所有的依赖库都在中央仓库,或者中央仓库访问速度很慢,远程仓库是中央仓库的补充。

POM

POM 代表项目对象模型,它是一个 XML 文件,保存在项目根目录的 pom.xml 文件中。

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

[groupId, artifactId, version, packaging, classifier] 称为一个项目的坐标,其中 groupId、artifactId、version 必须定义,packaging 可选(默认为 Jar),classifier 不能直接定义的,需要结合插件使用。

  • groupId:项目组 Id,必须全球唯一;
  • artifactId:项目 Id,即项目名;
  • version:项目版本;
  • packaging:项目打包方式。

依赖原则

1. 依赖路径最短优先原则

A -> B -> C -> X(1.0)
A -> D -> X(2.0)

由于 X(2.0) 路径最短,所以使用 X(2.0)。

2. 声明顺序优先原则

A -> B -> X(1.0)
A -> C -> X(2.0)

在 POM 中最先声明的优先,上面的两个依赖如果先声明 B,那么最后使用 X(1.0)。

3. 覆写优先原则

子 POM 内声明的依赖优先于父 POM 中声明的依赖。

解决依赖冲突

找到 Maven 加载的 Jar 包版本,使用 mvn dependency:tree 查看依赖树,根据依赖原则来调整依赖在 POM 文件的声明顺序

相关文章
|
前端开发 JavaScript 开发者
Vite前端构建工具详解
Vite 是一款新兴的前端构建工具,它的出现带来了前端开发体验的革命性变化。本文将介绍 Vite 的基本概念和核心特性,并通过代码实例来演示其强大功能。
189 0
|
3月前
|
缓存 移动开发 Rust
前端构建工具 Mako 开源了
Hi,我是 sorrycc,Mako 的主要负责人之一,也是 Umi、Dva、Father 等库的作者。 很开心,Mako 终于开源了! Github 地址:https://github.com/umijs/mako/ 今天和大家正式介绍下他。
151 3
|
7月前
|
前端开发 JavaScript 安全
Vite:极速的现代化前端构建工具
Vite:极速的现代化前端构建工具
|
7月前
|
Rust 测试技术 开发工具
Rust中的Cargo:依赖管理与项目构建
本文将深入探讨Rust编程语言中的Cargo工具。Cargo不仅用于构建Rust项目,还是管理项目依赖的关键组件。我们将了解如何使用Cargo创建新项目、添加依赖项、以及如何通过Cargo进行构建和测试,从而确保项目的顺利开发与部署。
|
前端开发 JavaScript API
前端工程化和构建工具的选择
前端工程化和构建工具的选择
147 1
|
前端开发 JavaScript 开发者
前端工程化构建工具之Grunt
在前端工程化构建工具中,Grunt是一个非常流行的开源工具。
138 0
|
缓存 资源调度 前端开发
前端工程化之构建工具
构建解决的问题 包管理工具 任务式构建工具 模块化:模块定义与模块化的构建工具
206 0
前端工程化之构建工具
|
资源调度 前端开发 JavaScript
前端开发与构建工具Vite
前端开发与构建工具Vite
前端开发与构建工具Vite
|
监控 前端开发 JavaScript
Gulp前端自动化构建工具的应用
实际前端开发不再仅仅是静态页面的开发了,丰富的前端技术让前端的代码逻辑越来越复杂, 模块化开发和各类框架也增加了在生产环境中部署开发环境代码的难度,这种情况下,前端自动化构建在前端开发中尤为重要。 我们会遇到下面的问题: a. 每次修改了HTML、JS、CSS等文件,都需要手动刷新浏览器,能不能修改了让浏览器自动刷新呢 ? b. 在发布项目的时候,需要将前端资源进行合并、压缩,尽量减少http请求,手动去完成合并压缩不仅繁琐,还容易出错,有什么技术可以自动地执行这些操作,解放我们的双手呢?
139 0
Gulp前端自动化构建工具的应用
|
Java Scala Maven
gradle构建工具的使用
gradle是构建工具,类似于ant和maven,也许目前maven还是主流,但是gradle却是综合了ant和maven的优点,发展速度很快,所以很有必要了解一下。
gradle构建工具的使用