声明: 1. 本文为我的个人复习总结, 并那种从零基础开始普及知识 内容详细全面, 言辞官方的文章
              2. 由于是个人总结, 所以用最精简的话语来写文章
              3. 若有错误不当之处, 请指出

  • Maven 是一款自动化构建工具,专注服务于 Java 平台的项目构建依赖管理

    依赖, 就是jar包的意思

​ Make→Ant→Maven→Gradle→其他……

  • 安装好后

    1. 设置Path变量

    2. 设置镜像网站

    3. 修改JDK版本

    4. 修改本地仓库

  • 构建环节(构建不等于搭建)

    ①清理:删除以前的编译结果,为重新编译做好准备。

    ②编译:将 Java 源程序编译为字节码文件。

    ③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。

    ④报告:在每一次测试后以标准的格式记录和展示测试结果。

    ⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web工程对应 war 包。 mvn source:jar是单独打包源码(类路径下),不含其他所用jar包

    ⑥安装:在 Maven 环境下特指将打包的结果 jar 包或 war 包安装到本地仓库中。

    ⑦部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。

  • jar 包冲突时:

    ①路径最短者优先

    ②路径相同时先声明者优先

    即最短路径优先, 先声明者优先

  • <propertie>中属性可以重写父亲中的内容

  • 生命周期

    11.1 什么是 Maven 的生命周期

    Maven 生命周期定义了各个构建环节的执行顺序,有了这个清单,Maven 就可以自动化的执行构建

    命令了。

    Maven 有三套相互独立的生命周期,分别是:

    ①Clean Lifecycle 在进行真正的构建之前进行一些清理工作。

    ②Default Lifecycle 构建的核心部分,编译,测试,打包,安装,部署等等。

    ③Site Lifecycle 生成项目报告,站点,发布站点。

    再次强调一下它们是相互独立的,你可以仅仅调用 clean 来清理工作目录,仅仅调用 site 来生成站点。

    当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。

    每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。

    比如,运行 mvn clean,这个 clean 是 Clean 生命周期的一个阶段。有 Clean 生命周期,也有 clean 阶段。

    11.2 clean 生命周期

    Clean 生命周期一共包含了三个阶段:

    ①pre-clean 执行一些需要在 clean 之前完成的工作

    ②clean 移除所有上一次构建生成的文件

    ③post-clean 执行一些需要在 clean 之后立刻完成的工作

    11.3 Site 生命周期

    ①pre-site 执行一些需要在生成站点文档之前完成的工作

    ②site 生成项目的站点文档

    ③post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

    ④site-deploy 将生成的站点文档部署到特定的服务器上

    这里经常用到的是 site 阶段和 site-deploy 阶段,用以生成和发布 Maven 站点,这可是 Maven 相当强

    大的功能,Manager 比较喜欢,文档及统计数据自动生成,很好看。

    11.4 Default 生命周期

    Default 生命周期是 Maven 生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。这里,

    只解释一些比较重要和常用的阶段:

    validate

    generate-sources

    process-sources

    generate-resources

    process-resources 复制并处理资源文件,至目标目录,准备打包。

    compile 编译项目的源代码。

    process-classes

    generate-test-sources

    process-test-sources

    generate-test-resources

    process-test-resources 复制并处理资源文件,至目标测试目录。

    test-compile 编译测试源代码。

    process-test-classes

    test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。

    prepare-package

    package 接受编译好的代码,打包成可发布的格式,如 JAR。

    pre-integration-test

    integration-test

    post-integration-test

    verify

    install 将包安装至本地仓库,以让其它项目依赖。

    deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享或部署到服务器上运行。

    11.5 生命周期与自动化构建

    运行任何一个阶段的时候,它前面的所有阶段都会被运行,例如我们运行 mvn install 的时候,代码会

    被编译,测试,打包。这就是 Maven 为什么能够自动执行构建过程的各个环节的原因。此外,Maven

    的插件机制是完全依赖 Maven 的生命周期的,因此理解生命周期至关重要

  • 插件与目标

    ●Maven 的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的。

    ●每个插件都能实现多个功能,每个功能就是一个插件目标。

    ●Maven 的生命周期与插件目标相互绑定,以完成某个具体的构建任务。

  • dependencyManagement(只是做个声明并不是直接导入jar包到该工程以及子模块, 在子模块里实际用到jar包时, 才真正进行导入; 常用来父工程里做依赖的版本管理)

  • import(对单继承的扩展, 相当于多继承懒模式导入一些jar包)

  • 继承

    是为了让父pom的 dependencyManagement能替他管理jar包版本,

    以及继承父pom的 dependency中的jar包

  • 聚合

    是为了一键操作,让父亲(未必一定是父亲),不是父子也可以发生聚合,缕清孩子们之间的打包顺序, 为了快速的构建项目(构建不是搭建)

  • scope,默认为compile,也是活的最久的

  • 坑处:

    • system不用管, 它只从本地仓库找jar包,不会从maven中央仓库找jar包
    • test, provided都会阻断依赖的传递
    • 所以想进行传递的依赖都会被打包进去, 建议想只在idea里用&&又想依赖传递
    • parent工程里需要去掉spring-boot的maven打包插件,因为里插件会继承, 不然子模块里的非服务工程会报找不到main.class
    • SpringBoot打包, 祖先工程为spring-boot-starter-parent,且使用专用的maven打包插件
    • maven的某个jar包不想依赖传递,千万别用scope provide的方式,因为这样会在运行期类不起作用,报ClassNotFoundException,可以使用true的方式阻止依赖传递
    • 打包是在运行后面的
  • 打包时跳过单元测试:

    mvn package -DskipTests,不执行测试用例,但编译测试用例类到target/test-classes下。

    mvn package -Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。

  • maven安装jar包到本地

    mvn install:install-file  -Dfile=E:\\phoenix-core-5.0.0-HBase-2.0.jar  -DgroupId=org.apache.phoenix
    -DartifactId=phoenix-core  -Dversion=5.0.0-HBase-2.0  -Dpackaging=jar
    
  • 打包用的shade插件

        <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.2.1</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><!-- 修改Main类名 --><mainClass>com.hellosrc.count.BiliBiliTimeCountMain</mainClass></transformer></transformers></configuration></execution></executions></plugin></plugins></build>
    

Maven基础知识(个人总结)相关推荐

  1. Maven (1)---maven 基础知识

    Maven 学习 Maven 翻译为"专家"."内行",是 Apache 下的一个纯 Java 开发的开源项目.基于项目对象模型(缩写:POM)概念,Maven ...

  2. Maven基础知识--Maven资源库详述

    什么是Maven资源库? 在 Maven 术语里存储库是一个目录,即目录中保存所有项目的 jar 库,插件或任何其他项目特定文件,并可以容易由 Maven 使用. Maven库中有三种类型 local ...

  3. Maven基础与私服搭建

    Blog诞生记 Android studio构建项目有时候build.gradld构建缓慢,严重影响了开发心情,这仅是次要因素,最重要的是leader为了考虑团队发展,建议搭建Maven私服,把项目模 ...

  4. java培训基础知识都学哪些

    很多人都开始学习java技术,觉得java语言在未来的发展前景空间非常大,事实却是如此,那么针对于零基础的同学, 学习java技术需要学哪些呢?下面我们就来看看java培训基础知识都学哪些? java ...

  5. java 网络爬虫 正则表达式_【干货】Java网络爬虫基础知识

    原标题:[干货]Java网络爬虫基础知识 引言 Java 网络爬虫具有很好的扩展性可伸缩性,其是目前搜索引擎开发的重要组成部分.例如,著名的网络爬虫工具 Nutch 便是采用 Java 开发,该工具以 ...

  6. crawler4j_迷你搜索引擎–使用Neo4j,Crawler4j,Graphstream和Encog的基础知识

    crawler4j 继续执行正在实现搜索引擎的Programming Collection Intelligence (PCI)的第4章. 我可能比做一次运动所咬的东西要多. 我认为,与其使用本书中所 ...

  7. 迷你搜索引擎–使用Neo4j,Crawler4j,Graphstream和Encog的基础知识

    继续执行正在实现搜索引擎的Programming Collection Intelligence (PCI)的第4章. 我可能比做一次运动所咬的东西要多. 我认为, 与其一直使用本书中使用的普通关系数 ...

  8. mvc试图 下拉框不重复_面试前不巩固一下基础知识、刷刷题吗?

    其实面试就像一场相亲,在你心动人的面前,肯定要展示自己最好的一面,无论是穿着还是言行举止.作为一个软件开发工程师,看过很多公司的面试题,也参与过很多公司的面试,也给不少人新人面过时不试,虽说我现在并没 ...

  9. 大数据?这些你了解吗?------之基础知识篇

    下面介绍的这些是在Linux环境下学习大数据所必须要掌握的基础知识: 1.导入虚拟机  =>解压=>英文目录下=>导入VMware中[已移动]=>超级管理员用户root/123 ...

最新文章

  1. 深度学习Dropout技术分析
  2. echart(2),模拟数据导入篇
  3. Kafka事务特性详解
  4. PHP的isset()和empty()比较
  5. tomcat自动运行磁盘任意位置上的项目、使用Maven对tomcat进行自动部署
  6. php如何获取上传文件的后缀?
  7. 如何让eclipse恢复默认布局
  8. gitolite 踩坑记
  9. 獲取mysql字段的注释或描述
  10. {ACL2020}In Layman’s Terms: Semi-Open Relation Extraction from Scientific Texts(关系抽取,半开放关系抽取)
  11. REGEXP使用经验
  12. Illustrator 教程,如何在 Illustrator 中使用曲率工具绘制?
  13. Python递归的几个经典案例
  14. 【软件项目管理】期末复习
  15. 阿里云弹性云桌面解决方案、高性能GPU型云桌面用于设计、建模、影视制作
  16. HDFS中Locality 为什么介于0~1之间?与HBase之间有什么关系?
  17. 初识C语言之条件结构篇——带你认知编程世界的逻辑之美!
  18. AUTOSAR入门介绍
  19. html5猜颜色游戏,好看漂亮的html5网页特效学习笔记(3)_猜猜下一个颜色是什么?...
  20. Subset sum problem

热门文章

  1. NLP ---分词详解(常见的五种分词技术二)
  2. 旧计算机无法识别usb3.,无法识别usb设备怎么办?实测成功解决
  3. 2019/10/17 05-文件对象的读写方法
  4. 【教材】20022/11/28[指针] 指针数组
  5. JIRA扩展定制入门知识分享,附Github代码库
  6. 信息系统项目管理 - 范围管理(划重点)
  7. iOS立方体翻转3D特效
  8. 债券价格和到期收益率的关系_[债券知识]什么是到期收益率?到期收益率与债券价格的关系 - 南方财富网...
  9. ChatGLM2-6B、ChatGLM-6B 模型介绍及训练自己数据集实战
  10. [转]FBWCBBWC