Ant-Maven-Gradle

2023-11-19

make:

Makefile学习 - peterYong - 博客园

ant:

ant 工具 - milkty - 博客园

maven:

学习Maven这一篇就够了_轻松的小希的博客-CSDN博客

学Maven,这篇万余字的教程,真的够用了! - 江南一点雨 - 博客园

仓库:

仓库名称

作用

本地仓库

相当于缓存,工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。

中央仓库

仓库中jar由专业团队(maven团队)统一维护。中央仓库的地址:repo1.maven.org/maven2/

远程仓库

在公司内部架设一台私服,其它公司架设一台仓库,对外公开。

坐标:

<groupId>:类似于Java的包名,通常是公司或组织名称。团体、公司、组织机构等等的唯一标识。团体标识的约定是它以创建这个项目的组织名称的逆向域名(例如 org.javaboy)开头。

<artifactId>:类似于Java的类名,通常是项目名称。相当于在一个组织中项目的唯一标识符。

<version>:一个项目的版本。

<scope>:

compile :为默认的依赖有效范围。如果在定义依赖关系的时候,没有明确指定依赖有效范围的话,则默认采用该依赖有效范围。此种依赖,在编译、运行、测试时均有效。

provided :在编译、测试时有效,但是在运行时无效。例如:servlet-api,运行项目时,容器已经提供,就不需要Maven重复地引入一遍了。

runtime :在运行、测试时有效,但是在编译代码时无效。例如:JDBC驱动实现,项目代码编译只需要JDK提供的JDBC接口,只有在测试或运行项目时才需要实现上述接口的具体JDBC驱动。

test :只在测试时有效,例如:JUnit。

system :在编译、测试时有效,但是在运行时无效。和provided的区别是,使用system范围的依赖时必须通过systemPath元素显式地指定依赖文件的路径。由于此类依赖不是通过Maven仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植,因此应该谨慎使用。systemPath元素可以引用环境变量。

生命周期:

常用命令

中文含义

说明

mvn clean

清理

这个命令可以用来清理已经编译好的文件

mvn validate

验证项目

验证项目是否正确且所有必须信息是可用的

mvn compile

编译

将 Java 代码编译成 Class 文件

mvn test

测试

使用适当的单元测试框架(例如JUnit)运行测试。

mvn package

打包

根据用户的配置,将项目打成 jar 包或者 war 包

mvn verify

检查

对集成测试的结果进行检查,以保证质量达标

mvn install

安装

安装打包的项目到本地仓库,以供其他项目使用

mvn site

站点文档

生成项目的站点文档

mvn deploy

上传

拷贝最终的工程包jar到远程/私服仓库中,以共享给其他开发人员和工程

冲突依赖:

maven冲突依赖

级别:

        我们不妨把pom.xml里面的引用的依赖视为第一级,那么依赖中各自引用的依赖视为第二级...第三级...

路径长短:

        我们不妨以从pom.xml出发,到抵达该依赖时经过的“级”的个数来作为路径长短的标准。

原则

不同级(最短路径引用)原则

同级(第一级遵循最后、其它级遵循最先引用)原则

介绍

若两个版本不同的同一依赖,在不同的级别中,那么优先使用路径最短的那一个。

在第一级,谁后声明,使用谁

不在第一级,谁先声明,使用谁

图示

gradle:

Gradle 理解 (一):Gradle 介绍 - 掘金

make

ant

maven

gradle

简介

根据指定的shell语言进行构建的工具,使用make命令执行用户自定义操作。

用户自定义XML配置完成依赖项管理和构建的自动化工具。

基于对象模型的半自定义依赖项管理和构建的自动化工具。

基于ant和maven概念的项目自动化构建开源工具。

配置文件

类似shell语言编写的的Makefile文件。

XML文件,默认build.xml。

XML文件,默认pom.xml。

基于Groovy的特定领域语言(DSL)声明项目设置,抛弃XML繁琐配置。默认build.gradle。

特点

  • 不限制于任何特定的语言。对于程序任何的非源文件,makefile 通过 shell 命令去生成对应的可执行程序。

  • 完全按照自己设定的规则去更新/生成可执行文件。

  • Java语言开发,一切皆是自定义。

  • 不强加任何编码约定或项目结构。

  • 要求开发人员自己编写所有命令,可能会导致难以维护的巨大XML构建文件。

  • 提出仓库和坐标概念,便于管理和定位依赖。

  • 不执行任何具体的构建工作,全部都交给插件去执行。

  • 所有项目中使用一致,新开发人员无需花费更多时间来参与项目。

  • 基于模型的构建,Maven能够将任何数量的项目构建为预定义的输出类型,例如JAR,WAR。

  • 面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala。

  • 支持多方式依赖管理:包括从maven远程仓库、nexus私服、ivy仓库以及本地文件系统的jars或者dirs。

  • 首个集成工具,兼容ant、maven、ivy。

  • 支持maven的仓库和坐标。

  • Gradle 的依赖管理不仅限于外部库,同时还支持多项目构建,项目之间依赖建模。

优点

  • 完全按照用户自己设定规则执行,减少不要的流程步骤。

  • Java开发实现的,跨平台。

  • 可自定义开发插件,简化流程。

  • ant插件的时候,你会发现它更多的功能。

  • 有生命周期。

  • 约定优于配置,有目录结构。

  • 带有可重用插件,也可自定义插件。

  • 可以将项目过程规范化、自动化、高效化以及强大的可扩展性。

  • 支持排除传递性依赖以及关闭传递性依赖。

  • 遵循基础配置基础上,可自定义任务。

  • 使用基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。

缺点

  • 统一放置一个Makefile文件,难以维护。

  • 完全自定义,缺少一定规范。

  • 不能跨平台。

  • 不带有正式约定,无目录结构。

  • 完全自定义,缺少一定规范。

  • 无生命周期。

  • xml进行配置的,语法不简洁。

  • 过于约定优于配置,不能灵活定义自己的任务。

  • 庞大臃肿,冷启动一下太慢;概念繁多复杂,学习曲线陡峭。

  • 变化太快,社区跟不上。

私服作用:

  1. 私服是一个介于开发者和远程仓库之间的代理。

  2. 私服可以用来部署公司自己的 jar。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ant-Maven-Gradle 的相关文章

随机推荐

  • epoll小结

    1 select和poll模型为什么会慢 假如有100w用户和一个进程保持tcp连接 而每一个时刻只有几十个活跃的连接 也就是说 每一个时刻进程只需要处理这100w连接中的一小部分 那么如何高效的处理 进程是否在每次询问操作系统收集有事件发
  • docker部署实操二:tomcat部署

    首先我们要去下载Tomcat的镜像 因为镜像本身就是一个简化的操作系统 一般来说你下一个镜像不用去里面设置环境变量 所谓的开箱即用 搜索tomcat镜像 首先第一步搜索镜像 docker search tomcat 下载指定版本的tomca
  • 白盒测试(单元测试JUnit使用参数化测试@Parameters)

    目录 1 背景知识 2 例子 3 参数化流程 4 执行结果 5 练习题 1 背景知识 在测试过程中 我们可能会遇到这样的函数 它的参数有许多特殊值
  • Linux使用nvida-smi查看GPU类型

    nvida smi提供一个查看GPU信息的方法 然而这种方式不能查看GPU型号 型号被省略成了GeForce RTX 208 如果我们需要查看GPU的型号 只需要运行nvidia smi L即可 mrfive ubuntu nvidia s
  • STM32移植freemodbusRTU(hal库)从机

    MODBUS源码下载 freemodbus源码 github地址 一 移植准备 1 cubemx创建基础工程 配置串口和定时器以及时钟 2 拷贝freertos源码到工程目录 新建一个freemodbus文件夹 拷贝modbus文件夹 3
  • 编码 & 8421BCD 码的故事

    计算机编码中 我们都是先了解了二进制 其中分有符号数 无符号数 然后会接触到BCD码 那么BCD码是怎么产生的 为什么又要用四位二进制来表示呢 8421BCD 码的故事 一 BCD码 1 由来 2 8421BCD码 3 修正 二 底层验证修
  • 是面试官放水,还是公司实在是太缺人?这都没挂,华为原来这么容易进...

    华为是大企业 是不是很难进去啊 在华为做软件测试 能得到很好的发展吗 一进去就有9 5K 其实也没有想的那么难 直到现在 心情都还是无比激动 本人211非科班 之前在字节和腾讯实习过 这次其实没抱着什么特别大的希望投递 没想到华为可以再给我
  • 编译内核linux-2.6.38 出现error (2013-03-28 10:42)

    内核建议到官网下载 当然如果签名对的话也可以 解压后 保险起见 make mrproper 然后 make oldconfig 最后 make menuconfig 配置内核 然后再开始编译 在编译内核linux 2 6 38 出现以下问题
  • Android 透明状态栏

    转载 https blog csdn net fan7983377 article details 51604657 最近公司产品提出透明状态栏的要求 将一张背景填充满屏幕 自己记录一下 Android 透明状态栏 有两种 背景是图片还是纯
  • PHP 生成excel

    PHP 生成excel 好用强大的php excel类库 做Magento的订单导出Excel功能 找了这个php的excel类 PHPExcel PHPExcel是强大的 MS Office Excel 文档生成类库 基于Microsof
  • 课程笔记3

    一 以太坊 比特币被称为区块链1 0 以太坊被称为区块链2 0 以太坊的符号是ETH 以太币的符号是Ether 单位是Wei 比特币的符号是BTC 单位是Satoshi 以太坊做出的改进 在以太坊中出块时间减少到十几秒 比特币的mining
  • iOS实训笔记—调用系统相机与网络请求

    iOS开发实训第三周周报 总结 本周开始进行项目的开发 目前小组计划共同完成前端开发 我负责的部分为个人页面 其中涉及到加载个人信息时 需要从相册或相机获取图片 作为头像上传 并进行网络请求 获取资源 因此本周周报总结这部分的内容 学习知识
  • NeRF学习笔记(含公式、图解和过程)

    NeRF学习笔记 关注公众号 不定期分享NeRF相关文献 引言 NeRF Representing Scenes as Neural Radiance Fields for View Synthesis作为2020年ECCV的一篇论文 在用
  • 51单片机的智能饮水机控制系统【proteus仿真+程序+原理图】

    1 主要功能 该系统由AT89C51单片机 LCD1602模块 DS18B20温度传感器模块 DS1302时间模块 继电器驱动模块 电位器模块构成 适用于智能饮水机 智能水杯等相似项目 可实现功能 版本一 1 LCD1602实时显示时间 水
  • 在CentOS上安装桌面环境(例如GNOME)

    可以按照以下步骤在 CentOS 上安装桌面环境 例如 GNOME 确保您的 CentOS 系统已连接到互联网 并拥有 root 或具有 sudo 权限的用户 打开终端 并使用 yum 包管理器更新系统 sudo yum update 安装
  • MSP430嵌入式接口编程(惯性测量单元温湿度双音多频磁力计LCD显示等)

    Energia IDE编程MSP430 GPIO 串口通讯 定时中断 添加库 嵌入式器件接口编程 加速度计 include
  • 全 民 进 入 互 联 网

    2015年 3C行业的变化有目共睹 互联网 的概念全面深入人心 贯穿于企业经营和百姓的日常生活中 通讯行业提速降费 诸多国产精品手机现身 电商行业更加规范 移动端超越PC端成为主流渠道 家电行业诞生多个新技术 智能家电格局正在改写 让我们一
  • C++实现FFT频谱分析

    Update 9 10 2022 鸽了太久 增补了一些新的表述和简单推导 以及FFT在算法竞赛中的应用部分 帖子里的代码已经分别在2021全国大学生电子设计竞赛 洛谷OJ和课程设计中实战过 可靠性有保障 Origin 10 23 2021
  • web前端技术笔记(九)JavaScript介绍、变量、操作元素属性

    JavaScript JavaScript介绍 变量 变量类型 变量 函数 属性 函数参数命名规范 获取元素方法一 操作元素属性 通过 操作属性 通过 操作属性 innerHTML JavaScript介绍 JavaScript是运行在浏览
  • Ant-Maven-Gradle

    make Makefile学习 peterYong 博客园 ant ant 工具 milkty 博客园 maven 学习Maven这一篇就够了 轻松的小希的博客 CSDN博客 学Maven 这篇万余字的教程 真的够用了 江南一点雨 博客园