• Ant-Maven-Gradle


    make:

    Makefile学习 - peterYong - 博客园

    ant:

    ant 工具 - milkty - 博客园

    maven

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

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

    仓库:

    仓库名称

    作用

    本地仓库

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

    中央仓库

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

    远程仓库

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

    坐标:

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

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

    一个项目的版本。

    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。

  • 相关阅读:
    [附源码]计算机毕业设计JAVA校园淘宝节系统
    qt-C++笔记之信号与槽
    MyBatis
    deb包格式实例详解
    Go语言Switch 语句
    K8S 1.24部署笔记
    达梦错误码信息-PRO*C 错误码汇编
    Android 实现Parcelable接口完成序列化
    webservice接口功能自动化测试准备工作(转)
    (五)在docker中添加nginx端口映射(解决docker中的nginx无法访问除80端口以外的问题)
  • 原文地址:https://blog.csdn.net/weichi7549/article/details/126234121