maven的使用教程_maven使用教程

maven的使用教程_maven使用教程maven面临的问题一个项目就是一个工程。如果项目非常大,最好是每一个模块对应一个工程。借助maven可以将一个项目拆分成多个工程项目中需要的jar必须要手动”复制”,”粘贴”到WEB-INF/lib目录下,带来的问题是:同样的jar包文件重复出现在不同的项目工程中,浪费空间。maven可以将jar仅仅保存在”仓库”中,有需要使用的工程”引用”这个文件接口,并不需要真的把jar包复制过来jar包需要别人替我们准备好,或到官网下载。不同技术的官网提供jar包下载的形式是五花八门的,有些技术的官网就是

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

maven

面临的问题

  1. 一个项目就是一个工程。如果项目非常大,最好是每一个模块对应一个工程。借助maven可以将一个项目拆分成多个工程
  2. 项目中需要的jar必须要手动”复制”,”粘贴”到WEB-INF/lib目录下,带来的问题是:同样的jar包文件重复出现在不同的项目工程中,浪费空间。maven可以将jar仅仅保存在”仓库”中,有需要使用的工程”引用”这个文件接口,并不需要真的把jar包复制过来
  3. jar包需要别人替我们准备好,或到官网下载。不同技术的官网提供jar包下载的形式是五花八门的,有些技术的官网就是通过maven下载的,如果是以不规范的方式下载的jar包,那么其中的内容可能是不规范的。借助maven可以以一种规范的方式下载jar包,因为所有指明框架或第三方工具的jar包以及按照统一规范的方式下载的jar包,内容也是可靠的。
  4. 一个jar包以来的其他jar包需要自己手动加入到项目中。
    如:A包依赖于B包,B包依赖于C包…

maven是什么
以 java源文件,框架配置文件,jsp,html,图片等资源为 原材料,去生产一个可以运行的项目的过程

构建过程中的各个环节

  1. 清理 清理以前的class字节码文件
  2. 编译:编译成class文件
  3. 测试:自动测试,自动调用junit
  4. 报告:测试程序执行的结果
  5. 打包:动态web打war,java工程打jar
  6. 安装:maven特定的概念–将打包得到的文件复制到”仓库”中的指定位置
  7. 部署:将动态web工程生成的war包复制到servlet容器的指定目录下,使其可以运行

maven核心概念

  1. 约定的目录结构
  2. POM
  3. 坐标
  4. 依赖
  5. 仓库
  6. 生命周期/插件/目标
  7. 继承
  8. 耦合

目录结构

maven约定目录结构

Hello
|——src
|——-|——-main
|——-|———|———java
|——-|———|———resource
|——-|——–test
|——-|———|———java
|——-|———|———resource
|——-pom.xml(maven核心配置文件)

注意:
maven的核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须由特定的插件来完成,而插件本身并不包含在maven的核心程序中。当我们执行的maven命令需要用到某些插件时,maven核心程序会首先到本地仓库中查找,如果找不到则去自动联网下载

POM

pom.xml对于maven工程是核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置

坐标

使用下面三个向量在仓库中为一定为一个maven工程

  • groupid 公司或组织域名倒序+项目名
  • artifactid 模块名
  • version 版本

仓库

  • 本地仓库
  • 远程仓库
    • 私服 搭建在局域网,为所有局域网内的maven工程服务
    • 中央仓库
    • 中央仓库镜像

仓库中保存的内容:

  • maven自身锁需要的插件
  • 第三方框架或工具的jar包
  • 我们自己开发的maven工程

依赖

maven解析依赖信息时回到本地仓库中查找被依赖的jar包,对于我们自己开发的maven工程,使用install命令安装后就可以进入仓库
依赖的范围

  • compile
    • 对主程序是否有效:有效
    • 对测试程序是否有效:有效
    • 是否参与打包:参与
  • test
    • 对主程序是否有效:无效
    • 对测试程序是否有效:有效
    • 是否参与打包:不参与
    • 典型例子:junit
  • provided范围依赖
    • 对主程序是否有效:有效
    • 对测试程序是否有效:有效
    • 是否参与打包:不参与
    • 是否参与部署:不参与
    • 典型例子:servlet.jar

生命周期

各个环节构建的顺序:不能打乱顺序,必须按照既定的正确顺序来执行,maven的核心程序中定义了抽象的生命周期,生命周期中各个阶段的具体任务是由插件来完成的,maven无论现在要执行生命周期的哪一个阶段,都是从这个生命周期最初的位置开始执行的。

插件和目标

  • 生命周期的各个阶段紧紧定义了要执行的任务是什么
  • 各个阶段和插件的目标是对应的
  • 相似的目标由特定的插件来完成
  • 可以将目标看做”调用插件功能的命令”

依赖

依赖的传递性
如果A依赖B,B依赖C,那么A依赖C。
可以传递的依赖不必在每个模块工程中都部署声明,在最下面的工程中依赖一次即可
注意 :非compile依赖没有传递性

依赖的排除

<exclusions>
	<exclusion>
		<groupId></groupId>
		<artifactId></artifactId>
	</exclusion>
</exclusions>

依赖的原则
解决依赖之间冲突问题:maven解决依赖冲突问题的方法是就近原则
在这里插入图片描述
统一管理依赖的版本
如果大量的包需要更改版本,需要手动去改,很麻烦。
建议的配置方式:

  • 使用properties标签内使用自定义标签统一生命版本号
  • 在需要统一版本的位置,使用${自定义标签名}引用生命的版本号
  • 其实properties标签配合自定义标签声明数据的配置不是只能用于声明依赖的版本号。凡是需要统一声明后再引用的场合都可以使用。

继承

现状

  • hello依赖的junit:4.0
  • hellofriend依赖的junit:4.1
  • makefriend依赖的junit:4.2
    由于test范围的依赖没有传递性,必然会分散在各个模块中,很容易造成版本不一致。
    需求:统一管理各个模块工程中对Junit依赖的版本
    解决思路:将junit依赖统一提取到”父”工程中,在子工程中声明junit依赖不定版本,以父工程中统一设定的版本为准。
  1. 创建一个maven工程作为父工程.注意:打包的方式pom
  2. 在子工程的坐标中声明对父工程的引用
  3. 将子工程的坐标与父工程坐标重复的删除
  4. 在父工程中统一junit依赖
  5. 在子工程中删除Junit依赖的版本号

注意:配置继承后,执行安装命令时要先安装父工程

聚合

作用:一键安装各个模块工程
配置方式:在一个“总的聚合工程”中配置各个参与聚合模块

maven的部署

maven deploy命令可以将maven工程部署到webapp下,不过一般用eclipse更将方便。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168825.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 中小型酒店管理系统[通俗易懂]

    中小型酒店管理系统[通俗易懂][摘要]计算机网络如果结合使用信息管理系统,能够提高管理员管理的效率,改善服务质量。优秀的中小型酒店管理系统能够更有效管理用户预订酒店业务规范,帮助管理者更加有效管理用户预订酒店,可以帮助提高克服人工管理带来的错误等不利因素。所以一个优秀的中小型酒店管理系统能够带来很大的作用。本中小型酒店管理系统使用了计算机语言Java和存放数据的仓库MySQl,采用了MVC设计模式来实现。本系统使用了框架SpringBoot实现了中小型酒店管理系统应有的功能,系统主要角色包括管理员、第三方管理员和酒店管理员。[关键词]

    2022年9月25日
    1
  • http请求生命周期流程

    http请求生命周期流程

    2021年10月30日
    36
  • [MODIS数据处理#1]利用MRT工具预处理MODIS数据——以MOD16、MOD13为例

    [MODIS数据处理#1]利用MRT工具预处理MODIS数据——以MOD16、MOD13为例文中涉及的部分MODIS数据处理方法仅适用于MODIS二级以上产品上一篇文章MODIS数据处理#0中,我们利用Chrono的资源嗅探功能批量下载MODIS数据。至此,已经得到了一系列的MODIS产品数据,文件后缀为.hdf。本文内容主要有:• hdf文件转换工具选择• HEG安装步骤• MRT批处理框架• 以MOD16、MOD13数据集为例,初识栅格一、hdf转换工具选择在导入Arc…

    2022年5月29日
    48
  • 吉他学习丨基础知识「建议收藏」

    1、吉他音高从上到下读法:米、西、扫、ruai、啦、米——mi、si、sol、re、la、mi上带点:高音不带点:中音下带点:低音 2、简谱与音程的关系音程:全音、半音 3、品琴颈上每格为1品 4、弹法左手:食指:1指;中指:2指;无名指:3指     1指弹1品;2指2品;3指3品右手:P指:4、5、6弦;  …

    2022年4月5日
    66
  • Linux运行c#_在控制台运行一个java程序

    Linux运行c#_在控制台运行一个java程序1、创建控制台程序如上图所示,选择语言为linux,我用的VS2019,.Net5.0,一直点下一步,创建。2、创建TCP服务端程序usingLinuxTcpApp.TcpServer;usingSystem;usingSystem.Net;namespaceLinuxTcpApp{classProgram{privatestaticAsyncTcpServertcpServer;staticvoidMain(s

    2022年9月4日
    3
  • pycharm怎么编译python_python需要编译器吗

    pycharm怎么编译python_python需要编译器吗PyCharm编译器有很强大的代码提示功能,业界都说很好用,所以我尝试着安装并使用,以下是过程。下载地址:http://www.jetbrains.com/pycharm/download/#section=windows安装完成之后需要激活我选择的是Licenceserver,然后输入一下的链接http://idea.imsxm.com/即可激活,亲测可用,若果失效了那就…

    2025年6月17日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号