Maven详见及在Idea中的使用方法[保姆级包学包会]

这篇具有很好参考价值的文章主要介绍了Maven详见及在Idea中的使用方法[保姆级包学包会]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Maven详解

1.1 目标

  • maven是什么?
  • maven能干什么?
  • maven是如何工作的?
  • maven中你遇到过什么问题,是通过什么方法,手段定位的问题,然后如何解决的?

1.2 Maven概括

  • maven简介

  • Maven 是一个项目管理和综合工具。Maven 提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven 使用标准的目录结构和默认构建生命周期。

  • 在多个开发团队环境时,Maven 可以设置按标准在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可重复使用,Maven 让开发人员的工作更轻松,同时创建报表,检查,构建和测试自动化设置。

  • 概括地说,Maven 简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。 Maven 增加可重用性并负责建立相关的任务。有了maven你的工作就简单了.

  • 下载安装(略)

      idea自带一套maven的环境.使用idea开发,无需安装windows的maven.
    
      但是有的开发者,喜欢单独使用maven,windows单独安装了一套.
    

1.3 多模块开发

1.3.1 pom.xml

  • 每一个maven项目都有一个pom文件.Project Object Model 项目对象模型,maven作为一个项目开发管理工具,将每一个项目看成是一个对象.pom文件是描述这个对象的数据文件**(元数据)**.通过pom文件的内容,maven软件就可以管理控制项目.

1.3.2 生命周期

maven管理项目时,总是先加载pom然后执行声明周期的命令逻辑,maven项目从创建开始,要经历如下几个生命周期环节.

概念: 生命周期,对象目标经历的环节,经历的步骤.
Maven详见及在Idea中的使用方法[保姆级包学包会],Maven相关,maven,intellij-idea,java,ide

  • validate:
    底层执行的maven命令 实际上 .校验一下 当前没问结构,环境是否符合maven项目开发要求.
    idea中几乎不会用到.
    mvn validate

  • compile:
    maven项目的编译,只负责main中相关内容的编译输出,默认输出到 target/classes
    mvn compile

  • test
    执行项目的单元测试. 会生成单元测试报告,包含前一步的compile,并且将测试代码编译输出
    mvn test

  • package
    将项目打包
    注意: 根据packaging类型不一样,打包的输出结果就不同.类型有三种常用的
    jar/war/pom.第三种类型没有代码,只能作为父工程或者聚合工程使用
    mvn package

  • install
    将项目打包,安装存放到本地库(远程库,本地库.目前的远程库 central中央库)
    mvn install

  • site
    根据Maven配置生成一个html页面集.针对这个项目做的可观测页面.
    mvn sit

  • deploy
    和私服有关.公司开发,传递jar包的方式
    mvn deploy
    Idea自定义运行命令
    Maven详见及在Idea中的使用方法[保姆级包学包会],Maven相关,maven,intellij-idea,java,ide
    执行自定义maven命令,添加一个选项-X可以在控制台打印maven执行命令的详细日志.
    目的是在出错的时候,帮助我们提供更准确的定位信息.
    提问: 所有maven项目的生命周期经历的环节都完全一样么?
    例如:
    项目运行的web应用: compile test package install deploy(不需要)
    项目是提供给同事复用的代码: compile test pakcage install deploy

1.3.3 依赖特性(多模块1)

Maven详见及在Idea中的使用方法[保姆级包学包会],Maven相关,maven,intellij-idea,java,ide
Maven详见及在Idea中的使用方法[保姆级包学包会],Maven相关,maven,intellij-idea,java,ide
依赖

  • 作用是什么: 代码项目的复用
  • 如何使用: dependency标签
  • 特性是什么: 依赖有传递性
  • idea中想要观察依赖的传递性: 传递性是强制传递,maven允许提出不需要的传递
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.22.RELEASE</version>
        <!--去除当前依赖,默认传递过来的其他依赖资源-->
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

Maven详见及在Idea中的使用方法[保姆级包学包会],Maven相关,maven,intellij-idea,java,ide
Maven详见及在Idea中的使用方法[保姆级包学包会],Maven相关,maven,intellij-idea,java,ide

1.3.4 继承特性(多模块2)

  • 在同一个项目中不同模块的开发者中,各自维护自己的项目依赖关系,有可能出现图中的情况,相互关联的两个模块同时依赖A.jar,但是版本不同,会导致严重的结果,相互之间的关系存在兼容问题. 为了保证没有兼容问题.
  • 继承意义
    为了统一多模块协作多人开发版本资源,maven提供了一个多模块特性–继承
    继承的实现
  • 确定父子关系**(文件夹结构就是父子关系)**
  • 父工程packaging标签值必须是pom,子工程使用parent标签指向父工程(idea自动帮你实现了)
    区分开类的继承,和maven的继承细节.区分开依赖和继承的区别
    细节: parent标签详解
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.13</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

relativePath: 子工程寻找父工程pom文件的相对路径地址.如果子工程无法找到父工程的pom,无法实现继承.这个值有三种配置方式

  1. 默认值(不给标签) …/pom.xml
  2. 自定义值,根据你的pom位置,合理的编写路径信息(夸文件夹级别继承)
  3. 空值 只在本地库找父工程的pom文件,如果本地库没有,从远程库下载
  • 本地库资源路径(必须掌握通过maven标签找到库资源)

    • 找本地库在哪c:/{User}/.m2/repository/org/springframework/boot/spring-boot-starter-parent/2.7.13
  • 继承的本质
    子工程继承父工程, pom文件的继承,继承之后,获取的内容就是pom文件中的标签.
    pom文件中标签的复用 依赖才是代码的复用

  • 常见的继承标签

    • groupId
    • version
    • properties
    • dependencies
    • dependencyManagement

1.3.5 dependencyManagement标签

依赖管理,在依赖管理标签定义的是依赖版本,dependencyManagement包含了一套完整的dependencies.
一旦在项目中定义了依赖管理,再使用依赖的时候,就可以省略版本号了.所以我们在父工程统一规划好所有的依赖资源版本,dependencyManagement被子工程继承之后,拥有了相同的特性,相当于做到了资源版本的统一定义,子工程尽可能不重写版本.

  • 补充
  1. 父工程定义一堆dependencies 能否实现统一管理资源版本? 能.
  2. 为什么不用? 因为这种统一管理版本 是一种强制的继承,让子工程承担了非常多不需要用到的依赖资源
    结合 properties和dependencyManagement的继承特性和标签的功能.父子继承的时候最终父工程样子Maven详见及在Idea中的使用方法[保姆级包学包会],Maven相关,maven,intellij-idea,java,ide按照上图,修改maven parent demo案例
    观察一些父工程的pom文件,能够阅读其中的pom标签.
    spring-boot-starter-parentMaven详见及在Idea中的使用方法[保姆级包学包会],Maven相关,maven,intellij-idea,java,ide

1.3.6 Maven-聚合(多模块3)

聚合 1.3.6.1

有依赖,有继承关系,已经看到maven多模块了.
一个团队开发项目时候,一定多模块管理的.多人协作开发,使用maven管理项目关系的.
假如项目结构:
Maven详见及在Idea中的使用方法[保姆级包学包会],Maven相关,maven,intellij-idea,java,idea1,a2,b1,b2是项目中4个人共同并行开发的.每个项目都是一个应用的web程序,所以目的都是打成jar包,运行java启动命令

java -jar a1.jar
java -jar a2.jar
java -jar b1.jar
java -jar b2.jar

每个项目都要执行maven声明周期中以下几个命令

  • mvn clean compile 编译
  • mvn clean test 测试
  • mvn clean package 打包
    发现2个问题需要解决:
  1. 打包命令重复执行很多遍.
  2. 执行相同命令时,还需要额外关心项目依赖关系.
  • 聚合的目的,就是为了统一执行mvn相关命令的.而不需要关心,依赖关系,继承关系,聚合本身就保管了所有的多模块关系.

如何实现聚合:文章来源地址https://www.toymoban.com/news/detail-558981.html

  1. 挑选一个聚合工程,聚合工程packaging类型是pom(和父工程要求是一致的)
  2. 聚合工程来实现modules配置.指向被聚合的工程(idea在创建工程时,自动实现的)
    maven-parent-demo 顶级父工程
<modules>
    <module>a1</module>
    <module>a2</module>
</modules>
  • 如果idea版本不同,在创建项目时,聚合的配置有所区别,有可能在顶级父工程中,聚合了所有人
  • 配置完上述两部操作,只需要对聚合工程执行mvn命令,统一对被聚合工程执行相同的命令,而且满足依赖关系
    Maven详见及在Idea中的使用方法[保姆级包学包会],Maven相关,maven,intellij-idea,java,ide
聚合总结
  • 意义: 统一多模块mvn命令和顺序的执行
  • 实现: 聚合工程packaging类型pom ,指向module被聚合工程
  • 本质: pom文件加载的顺序,通过modules关联起来了.

到了这里,关于Maven详见及在Idea中的使用方法[保姆级包学包会]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • maven的安装及在eclipse中的配置,及如何导入maven项目。

    一:Maven是什么 Maven是一个跨平台的项目管理工具,主要服务于基于Java平台的项目构建,依赖管理,和项目信息管理,跨平台使用相同命令。(linux,windows,mac) 二:Maven的作用 构建项目 依赖工具,第三方开源库jar增多,版本冲突,依赖臃肿等问题增多,maven可以很好的解决。 如何

    2024年02月06日
    浏览(51)
  • maven:Maven Helper插件使用方法

     maven Helper是排查jar包冲突的一大利器,jar包冲突大部分是由于引用了同一个jar的不同版本而导致的。  maven Helper就是一个将pom.xml图形化界面的一个插件(总比看xml好理解),并且增加了查询依赖冲突,搜索等功能。所以它的入口就是在pom文件中 下面用 分析Jar包冲突 和 查

    2024年02月12日
    浏览(85)
  • 5分钟学会GitHub基本使用方法,保姆级教程

    导读:我们先来了解一下 Git 和 Github 是什么,有什么功能 先说结论,Git 和 GitHub 是两个东西,Git 是一个软件/工具/系统,GitHub 是一个网站/平台,GitHub 这个网站使用了 Git 这个工具。 1.1 Git Git是一个分布式 版本控制系统 。 版本控制系统(version control system)像个数据库,它

    2024年02月20日
    浏览(56)
  • 阿里云maven仓库的使用详解以及报错解决方法

    阿里云Maven中央仓库为 阿里云云效 提供的公共代理仓库,帮助研发人员提高研发生产效率,使用阿里云Maven中央仓库作为下载源,速度更快更稳定。阿里云云效是企业级一站式 DevOps 平台,覆盖产品从需求到运营的研发全生命周期,其中云效也提供了免费、可靠的Maven私有仓库

    2023年04月08日
    浏览(43)
  • IDEA Eval Reset 使用方法

    IDEA Eval Reset 使用方法 idea eval reset 使用方法安装插件 离线安装方式     使用插件 成功安装插件后,在 帮助 下会多一个 Eval Reset 按钮,如下图所示: jetbrains 试用 一般来说,在 IDE 窗口切出去或切回来时(窗口失去/得到焦点)会触发事件,检测是否长时间(25 天)没有重置

    2024年02月06日
    浏览(90)
  • 使用Gitee或GitHub托管Maven仓库JAR包的便捷方法

    原文地址:https://ntopic.cn/p/2023062201/ 我开源的JAR包的Gitee和GitHub托管的Maven仓库: Gitee托管仓库:https://gitee.com/obullxl/maven-repository GitHub托管仓库:https://github.com/obullxl/maven-repository 在上一篇博客中,我们介绍了 开源通用高性能分布式id序列组件 (https://ntopic.cn/p/2023062101/)的设

    2024年02月11日
    浏览(49)
  • 在较新版pycharm中使用conda虚拟环境的两种方法-保姆级教程

    首先创建new-project 之后等待配置索引等文件即可。 在终端terminal中直接使用conda activate xxx,但是失效。 解决方法: file-settings-Tools-Terminal 之后一定要记得 重启! 然后就好了: 之后conda activate xxx(你的虚拟环境),在里面运行你的python文件即可(python xxx.py --xxx) 如果是这样创建的

    2024年02月09日
    浏览(48)
  • idea配置本地maven保姆级教程

    idea默认会带有maven插件,原则上是可以不需要配置的。但有个缺点,他是把本地仓库直接安装在了系统盘里面,随着时间的推移,仓库越来越大,笔记本的压力会比较大。 本文是下载自己的maven包,集成idea ,并 配置指定的 maven本地仓库(可以把仓库配置在其他盘里面) 1、

    2024年02月13日
    浏览(63)
  • 使用IntelliJ IDEA查看接口的全部实现方法

    在大型Java项目中,经常会使用接口和抽象类进行代码设计。为了更好地了解代码结构和功能,我们需要快速查看一个接口的所有实现类。IntelliJ IDEA提供了一些方便的方法来实现这一目标。 在IDEA中,你可以轻松地查看接口的所有实现类。以下是步骤: 使用快捷键 Ctrl + Alt +

    2024年02月21日
    浏览(62)
  • idea导入javaweb项目非maven(保姆级)

    前言:网上下载的代码不会运行???总是报错不知道如何解决???那么你可能需要看看我这篇文章可能会解决你的疑惑 一、java环境jdk和jre,尽量是1.8,目前1.8最通用 二、idae开发工具需要支持web开发的版本哦 三、tomcat尽量保持版本在7.0~9.0太高或者太老都会出现问题 四、mysql版本尽量

    2024年02月04日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包