Maven的安装与使用

2023-11-08

一、简介 

1.什么是Maven? 

  • Maven翻译为“专家“, ”内行”的意思,是著名Apache公司下基于Java开发的开源项目。
  • Maven项目对象模型(POM)是一个项目管理工具软件,可以通过简短的中央信息描述来管理项目的搭建,报告和文档等步骤。
  • Maven是一个项目管理的工具,可以对项目进行构建、依赖的管理。

2.Maven的作用

项目开发不仅仅是写写代码而已,期间会伴随着各种必不可少的事情要做,下面列举几个感受一下:

  1. 我们需要引用各种jar 包,尤其是比较大的工程,引用的ar 包往往有几十个乃至上百个,每用到一种jar 包,都需要手动引引入工程目录,而且经常遇到各种让人抓狂的jar包冲突,版本冲突。
  2. 我们写好的lava 文件,可是计算机只懂0和1,需要将它编译成二进制字节码。目前这项工作可以由各种集成开发工具帮我们完成Eclipse、IDEA等都可以将代 码即时编译。当然,也可以用记事本来敲代码,然后用avac命令一个个地去编译。
  3. 世界上没有不存在 bug 的代码,为了追求美为了减少bug,因此写完了代码,我们还要写一些单元测试,然后一个个的运行来检验代码质量。
  4. 再优雅的代码也是要出来卖的。我们后面还需要把代码与各种配置文件、资源整合到一起,定型打包,如果是 web 项目,还需要将之发布到服务器,供用户使用。试想,如果现在有一种工具,可以把你从上面的繁琐工作中解放出来,能帮你构建工程,管理 ar包,编译代码,还能帮你自动运行单元测试,打包,生成报表,甚至能帮你部署项目,生成 Web 站点,你会心动吗?Maven 就可以解决上面所提到的这些问题
  • 项目构建:提供标准的、跨平台的自动化项目构建方式
  • 依赖管理:方便快捷的管理项目依赖的资源((ar包),避免资源间的版本冲突问题
  • 统一开发结构:提供标准的、统一的项目结构 

3. 普通Java项目与使用Maven的区别

 使用Maven公用jar包

程序员A开发一个模块需要1、3、5三个jar包;程序员B开发一个模块需要1、5、8、9四个jar包

合并代码----1、3、5、1、5、8、9出现两个人所使用的版本冲突的问题

  • 本地仓库:在自己电脑上安装了maven,指定一个文件夹存放所有的jar包
  • 中央仓库:是maven把全球所有你能想到和想不到的所有jar包在服务器上放了一份,叫做中央库 从中央仓库下的jar包会放入本地仓库;中央仓库是个国外网站,可能有的公司会限制访问,阿里巴巴在国内搭建一个仓库,里面有所有maven仓库的镜像,国内程序员需要什么jar包都可以去阿里的镜像网站进行下载
  • 私服:就是公司的服务器;有些公司只能上内网,开发项目时需要jar包如何下载?公司专门搞一套电脑可以连接互联网,需要的jar包从这台电,不能跟互联网交互脑下载,这台电脑没有再去中央仓库下载,那么公司这台唯一可以连接外网的你电脑主机就是私服 

4.maven的生命周期

Maven拥有三套相互独立的生命周期,分别是clean、default和site.

5.maven的作用域

  1. compile   默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。
  2. test   scope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit。
  3. runntime  runntime表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过编译而已,说实话在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。Oracle jdbc驱动架包就是一个很好的例子,一般scope为runntime。
  4. provided  provided意味着打包的时候可以不用包进去,别的设施(Web Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。
  5. system  从参与度来说,也provided相同,不过被依赖项不会从maven仓库抓,而是从本地文件系统拿,一定需要配合systemPath属性使用。

二、maven配置

1.下载压缩包,解压到指定位置;


2.在系统环境变量中配置maven的bin路径;


3.配置一下maven的本地仓库位置和阿里云镜像

三、IDEA(2020)创建maven项目

1.创建项目,选择maven模板和骨架;

2.设置项目的基本信息后创建一个maven的web项目:

3.补充完善项目目录结构: main 包含java、resources、webapp三个目录

4.在pom.xm1中引用所需要的jar包坐标;

5.在右侧的maven工具窗口中执行刷新,自动下载所有的iar包到本地仓库中

6.模拟测试springmvc框架的运行;

IDEA配置本地的maven

1.File--->settings,在搜索框中搜索maven

2.选择本地maven的安装路径和conf中配置信息至比IDEA配置本地maven完成

 

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

Maven的安装与使用 的相关文章

  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • wait() 在游戏中如何工作?

    在 playframework 的文档中here http www playframework org documentation 1 2 1 asynchronous已写 public static void loopWithoutBlo
  • 如何在不超过最大值的情况下增加变量?

    我正在为学校开发一个简单的视频游戏程序 我创建了一个方法 如果调用该方法 玩家将获得 15 点生命值 我必须将生命值保持在最大值 100 并且由于我目前的编程能力有限 我正在做这样的事情 public void getHealed if h
  • Java 文件上传速度非常慢

    我构建了一个小型服务 它从 Android 设备接收图像并将其保存到 Amazon S3 存储桶中 代码非常简单 但是速度非常慢 事情是这样的 public synchronized static Response postCommentP
  • 如何模拟从抽象类继承的受保护子类方法?

    如何使用 Mockito 或 PowerMock 模拟由子类实现但从抽象超类继承的受保护方法 换句话说 我想在模拟 doSomethingElse 的同时测试 doSomething 方法 抽象超类 public abstract clas
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 自动生成/删除詹金斯工作

    我正在寻找一种自动创建一组詹金斯作业的方法 通常在创建新的 git 分支之后 我已经为maven尝试过这个插件 http evgeny goldin com wiki Maven jenkins plugin http evgeny gol
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • Cucumber Java 与 Spring Boot 集成 - Spring @Autowired 抛出 NullPointer 异常

    我正在为 Spring boot 应用程序编写 cucumber java 单元测试来测试每个功能 当我与 Spring Boot 集成时 Autowired 类抛出 NullPointer 异常 Spring Boot应用程序类 Spri
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • 如何使用 Maven 和 wsimport 从 wsdl 生成类?

    当我尝试运行 mvngenerate sources 时 这是我的输出 SLF4J Failed to load class org slf4j impl StaticLoggerBinder SLF4J Defaulting to no
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • 将 Azure AD 高级自定义角色与 Spring Security 结合使用以进行基于角色的访问

    我创建了一个演示 Spring Boot 应用程序 我想在其中使用 AD 身份验证和授权 并使用 AD 和 Spring Security 查看 Azure 文档 我执行了以下操作 package com myapp contactdb c
  • spring中如何使用jackson代替JdkSerializationRedisSerializer

    我在我的一个 Java 应用程序中使用 Redis 并且正在序列化要存储在 Redis 中的对象列表 但是 我注意到使用 RedisTemplate 会使用 JdkSerializationRedisSerializer 相反 我想使用 J
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话

随机推荐

  • [Nowcoder] Agamemnon‘s Odyssey

    链接 Agamemnon the great king of Mycenae was assembling his troops in Aulis to sail to the shores of Troy when he had a vi
  • 交换字符使得字符串相同--贪心算法

    LeetCode 交换字符使得字符串相同 有两个长度相同的字符串 s1 和 s2 且它们其中 只含有 字符 x 和 y 你需要通过 交换字符 的方式使这两个字符串相同 每次 交换字符 的时候 你都可以在两个字符串中各选一个字符进行交换 交换
  • java map equals_Java HashMap equals()方法

    Java HashMap equals 方法 java util HashMap equals 方法用于检查两个HashMap之间的相等性 它验证作为参数传递的一个映射的元素是否等于该映射的元素 1 语法 public boolean eq
  • SOA中的两个概念:编制(orchestration)和编排(choreography)

    以下是摘自 Understanding SOA with Web Services 中文版 关于两个概念的解释 编制 orchestration 和编排 choreography 是常用于描述 合成Web服务的两种方式 的术语 虽然它们有共
  • C 和 C++的区别 / struct 和 class 的区别 / 指针和引用的区别 / new 与 malloc 的区别 / 堆和栈的区别 / sizeof 和 strlen 的区别

    C 和 C 的区别 主要从以下三个方面来谈 设计思想 编程思想方面 语言特性方面 语法 内存管理 库 执行效率方面 C 和 C 的区别 C 是面向过程的语言 而 C 是面向对象的语言 因此 C 语言中有类和对象以及继承多态这样的面向对象语言
  • maskrcnn-benchmark训练自己数据集用于视觉分割

    1 标记数据用labelme 建议用ubuntu版本去做 因为window可能因为这个需要环境改变影响其他 自己犯过这个问题 https github com wkentaro labelme 2 labelme转化成coco数据集用于分割
  • Hyperlynx仿真操作小点

    一 改变传输线的属性 双击传输线 在对话框中选择要的线型 设置部分线的阻抗 点击edit coupling regions栏 选择右上方的edit stackup 编辑想要的叠层属性 通常改变顶底层和电源层 地层之间的PP厚度 10 8 5
  • 使用Python和XPath解析动态JSON数据

    JSON动态数据在Python中扮演着重要的角色 为开发者提供了处理实时和灵活数据的能力 Python作为一种强大的编程语言 提供了丰富的工具和库来处理动态JSON数据使得解析和处理动态JSON数据变得简单和高效 例如 使用内置的json模
  • python自动化处理,PPT处理

    一 PPT相关库介绍 安装python pptx库 同其他文件转换pptx2md rst2pptx 导入库 import pptx 初始化 ppt pptx Presentation 二 幻灯片层次结构说明 PPT文件结构 PPT文件结构指
  • 深入理解JVM—垃圾回收机制

    一 前言 明确垃圾收集器关注的部分 堆和方法区 着重学习如何确定哪些垃圾需要回收 垃圾回收算法以及GC触发条件 二 如何确定哪些垃圾需要回收 1 引用计数算法 在对象中添加一个引用计数器 每当有一个地方引用它时 计数器值就加一 当引用失效时
  • ROS2系统节点开机自启动

    要将ROS2节点设置为开机自启动 您可以创建一个systemd服务单元来管理它 一 创建launch文件 cd ros2 ws mkdir launch touch launch ros launch py 编辑内容 from launch
  • # 解析bt文件_PC端BT资源搜索及下载,诸位请节制!

    Hello大家好 这里是TopOne软件管家 毕竟要求的人太多了 今天将我测试最好的搭配给大家分享一下 当然 这个是站在我的角度 大家可以根据自己的使用情况进行调整 今天分享的是PC端 由于Mac限制 苹果电脑现只提供BT搜索软件 BT搜索
  • Windows下基于WSL2的Ubuntu开发环境搭建

    1 背景介绍 Windows是市场占有率最高的桌面操作系统 嵌入式开发领域一般需要搭建ubuntu虚拟机环境以实现linux下的交叉编译等工作 传统的Vmvare Ubuntu虚拟机安装过程繁琐且资源消耗巨大 自从Windows提供WSL2
  • 数据分析08——Pandas中对数据进行数据清洗

    0 前言 使用pandas修改数据是否会改变源数据 Pandas 对 DataFrame 的操作通常是针对原始数据本身而不是其副本的 例如 当我们使用 loc 或 iloc 方法选择 DataFrame 中的某行或某列并进行修改时 实际上是
  • python实现手势识别

    python实现手势识别 入门 使用open cv实现简单的手势识别 刚刚接触python不久 看到了很多有意思的项目 尤其时关于计算机视觉的 网上搜到了一些关于手势处理的实验 我在这儿简单的实现一下 PS 和那些大佬比起来真的是差远了 毕
  • Flink Sql使用mysql-cdc捕获多个表失败的问题

    问题描述 要捕获同一个库里的多个表的binlog 程序不报错 但是修改某个表后没有结果没有任何改变 fllinkSql的with语句 WITH connector mysql cdc hostname s port s username s
  • Linux安装anaconda3是否初始化的区别

    Linux安装anaconda3提示是否希望安装程序通过运行conda init来初始化Anaconda3 Do you wish the installer to initialize Anaconda3 by running conda
  • 数据结构1.1.1单链表的实现

    1 初始化链表节点内容 typedef struct char isbn 20 char name 10 double price Book typedef struct list Book date struct list next Li
  • GIT——! [rejected] master -> master (non-fast-forward)

    问题 rejected master gt master non fast forward error failed to push some refs to ssh 192 168 137 64 29418 51Selling git h
  • Maven的安装与使用

    一 简介 1 什么是Maven Maven翻译为 专家 内行 的意思 是著名Apache公司下基于Java开发的开源项目 Maven项目对象模型 POM 是一个项目管理工具软件 可以通过简短的中央信息描述来管理项目的搭建 报告和文档等步骤