首页 > 编程语言 >Java学习笔记(十四) maven1

Java学习笔记(十四) maven1

时间:2023-04-02 15:58:00浏览次数:56  
标签:maven 依赖 Java 项目 maven1 笔记 Maven 仓库 坐标

Maven

介绍

Maven是apache旗下的一个开源项目, 是一款用于管理和构建java项目的工具, 基于项目对象模型(POM)的概念, 通过一小段信息来管理项目的构建

Apache软件基金会, 成立于1999年7月, 是目前世界上最大的最受欢迎的开源软件基金会, 也是一个专门为支持开源项目而生的非营利性组织

开源项目: https://www.apache.org/index.html#projexts-list

作用:

  1. 依赖管理: 方便快捷的管理项目依赖的资源(jar包), 避免版本冲突问题,
  2. 统一项目结构: 提供标准, 统一的项目结构
  3. 项目构建: 标准跨平台(Linux, Windows, MaxOS)的自动化项目构建方式

仓库: 用于存储资源, 管理各种jar包

  • 本地仓库: 自己计算机上的一个目录
  • 中央仓库: 由Manen团队维护的全球唯一的, 仓库地址:https://repo1.maven.org/maven2/
  • 远程仓库(私服): 一般由公司团队搭建的私有仓库

idea集成

安装

下载地址:https://archive.apache.org/dist/maven/maven-3/(建议3.6.3版本, 版本太高会报错)

参考黑马程序员的这个视频P51

ppfiGf1.png

验证: cmd中输入指令mvn -v

配置

idea项目内配置:

  1. 先创建一个空项目, 在项目结构中设置JDK的版本
  2. 设置的Build选项下的Build Tools选中maven, 设置Maven home path , User settings file , Local repository
  3. Maven选项下的Runner选择对应的JRE版本
  4. Compile选项下的Java Compile设置Project bytecode version字节码文件版本为当前JDK的版本

ppfAc11.png

ppfA6pR.png

ppfAg6x.png

idea全局配置

  1. 关闭项目, 选择Customize中的All settings
  2. 后续步骤与上面的项目内配置相同

创建

  1. 创建好的空项目中创建模块, 选择Maven, 点击Next
  2. 填写模块名称, 坐标信息, 点击finish, 创建完成
  3. 编写HelloWorld, 并运行

ppfVnZ8.png

ppfVudS.png

ppfVeqf.png

Maven坐标

介绍:

  • Maven中的坐标是资源的唯一标识, 通过该坐标可以唯一定位资源位置
  • 使用坐标来定义项目或引入项目中需要的依赖

主要组成:

  • groupId: 定义当前Maven项目隶属组织名称(通常是域名反写)
  • artifactId: 定义当前Maven项目名称(通常是模块名称, 例如order-service goods-service)
  • version: 定义当前项目版本号
<groupId>com.tyrant</groupId>
<artifactId>maven-project01</artifactId>
<version>1.0-SNAPSHOT</version>

导入

方式一: 打开IDEA, 选择右侧Maven面板, 点击 + 号, 选中对应项目的pom.xml文件, 点击即可导入

方式二: 打开IDEA, 在file中选择项目结构, 选择Moudles, 点击 + 号, 选中对应项目的pom.xml文件, 点击即可导入

依赖管理

依赖配置

依赖:

指当前项目运行所需要的jar包, 一个项目中可以引入多个依赖

配置:

  1. 在pom.xml中编写<dependencies>标签
  2. <dependencies>标签中使用<dependency>引入坐标
  3. 定义坐标的groupId, artifactId, version
  4. 点击刷新按钮, 引入最新加入的坐标

注意:

  • 如果引入的依赖在本地仓库不存在, 将会连接远程仓库/中央仓库, 然后下载依赖
  • 如果不知道依赖的坐标信息, 可以到https://mvnrepository.com/
    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.10</version>
        </dependency>
    </dependencies>

依赖传递

依赖具有传递性

  • 直接依赖: 在当前项目中通过依赖配置建立的依赖关系

  • 间接依赖: 被依赖的资源如果依赖其他资源, 当前项目间接依赖其他资源

  • 排除依赖: 指主动断开依赖的资源, 被排除的依赖无需指定版本

            <!--排除依赖-->
            <exclusions>
                <exclusion>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                </exclusion>
            </exclusions>

依赖范围

依赖的jar包, 默认情况下, 可以在任何地方使用, 可以通过<scope>...</scope>设置其作用范围

作用范围:

  • 主程序范围有效(main文件夹范围内)
  • 测试程序范围有效(test文件夹范围内)
  • 是否参与打包运行(package指令范围内)
scope值 主程序 测试程序 打包(运行) 范例
compile(默认) Y Y Y log4j
test - Y - junit
provide Y Y - servlet-api
runtime - Y Y jdbc驱动

生命周期

Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一

Maven中有三套相互独立的生命周期:

  • clean: 清理工作
  • default: 核心工作, 如:编译, 测试, 打包, 安装, 部署等
  • site: 生成报告, 发布站点等

ppfJP2V.png

主要注意五个阶段:

  1. clean: 移除上一次构建生成的文件
  2. compile: 编译项目源代码
  3. test: 使用合适的单元测试框架运行测试(junit)
  4. package: 将编译后的文件打包, 如: jar, war等
  5. install: 安装项目到本地目录

同一套生命周期中, 当运行后面的阶段时, 前面的阶段都会运行

执行指定生命周期的两种方式:

  1. 在idea中, 右侧的maven工具栏, 选中对应的生命周期, 双击执行
  2. 在命令行中, 通过命令执行

标签:maven,依赖,Java,项目,maven1,笔记,Maven,仓库,坐标
From: https://www.cnblogs.com/tyrantblue/p/17280617.html

相关文章

  • Java学习笔记(十三) 前端基础2
    Ajax介绍概念:AsynchronousJavaScriptAndXML,异步的JavaScript和XML作用:数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想,用户名是否可用的校验等......
  • Java 函数式编程
    概述背景函数式编程的理论基础是阿隆佐·丘奇(AlonzoChurch)于1930年代提出的λ演算(LambdaCalculus)。λ演算是一种形式系统,用于研究函数定义、函数应用和递归。它为计算理论和计算机科学的发展奠定了基础。随着Haskell(1990年)和Erlang(1986年)等新一代函数式编程语言的诞生,......
  • Java学习笔记(十二) 前端基础1
    Web前端基础初识web前端网页由哪些部分组成?文字图片音频视频超链接等我们看到的网页,背后的本质是什么?程序员写的前端代码前端的代码是如何转换成用户眼中的网页的?通过浏览器转化(解析和渲染)成用户看到的网页浏览器中对代码进行解析渲染的部分,称为浏......
  • RxJava在业务系统中的实践
    在java的世界里由于大多数接口和API都是阻塞式的交互,进而影响到很多童靴的编程思想和编程习惯。因而,有一些专家讲java的编程模型是阻塞式模型(与Node.js区别大),不是没有道理的。从高性能的视角看,任何阻塞点都可能导致性能的退步。而响应式编程其天然就是非阻塞的,当数据准备完成后自动......
  • 面试题45(Java)-把数组排成最小的数(中等)
    题目:输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例1:输入:[10,2]输出:"102"示例 2:输入:[3,30,34,5,9]输出:"3033459"提示:0<nums.length<=100说明:输出结果可能非常大,所以你需要返回一个字符串而不......
  • springboot学习笔记1-基本介绍
    springboot基本介绍官方文档什么是springbootspringboot可以轻松创建独立的、生产级的基于spring的应用程序springboot直接嵌入tomcat、jetty、或undertow,无须打war包,可以直接运行springboot应用程序quickstartforspringbootdemo需求说明:quickstart创建......
  • Java基础语法
    用户交互Scanner实验importjava.util.Scanner;publicclassDome01{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);System.out.println("使用Next方式接受");if(scanner.hasNext()){......
  • java——spring boot集成kafka——spring boot集成kafka
    引入依赖:  <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId></dependency>          编写配置文件:    erver:port:8080spring:kafka:bootstrap-se......
  • Java IO面试题
    JavaIO概览JavaIO流的40多个类都是从如下4个抽象类基类中派生出来的。InputStream/Reader:所有的输入流的基类,前者是字节输入流,后者是字符输入流。OutputStream/Writer:所有输出流的基类,前者是字节输出流,后者是字符输出流。InputStream字节输入流InputStream用于......
  • Java:分数运算(类与对象)
    题目内容:设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。这个类的构造函数是:Fraction(inta,intb)    构造一个a/b的分数。这个类要提供以下的功能:doubletoDouble();    将分数转换为doubleFractionplus(Fractionr);    将自己的分......