热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Maven】使用指南动力节点视频笔记

教程视频:动力节点-https://www.bilibili.com/video/av459639103?p=4&spm_id_from=pageDriver 文章目录

教程视频:动力节点-https://www.bilibili.com/video/av459639103?p=4&spm_id_from=pageDriver


文章目录

  • Maven 自动化的构建工具
  • 第一章 Maven简介
    • 1.1 软件开发中的阶段
    • 1.2 Maven能做什么
    • 1.3 没有使用maven怎么管理依赖
    • 1.4 什么是maven
    • 1.5 maven中的概念
    • 1.6 maven工具的获取和安装
  • 第二章Maven的核心概念
    • 2.1 约定的目录结构
    • 2.2 POM
    • 2.3 坐标
    • 2.4 依赖 dependency
    • 2.5 仓库
    • 2.6 maven的生命周期,插件和命令
    • 2.7 自定义配置插件
  • 第三章 Maven和idea的集成
    • 3.1 idea中集成maven
    • 3.2 创建基于maven的普通java项目
    • 3.3 创建web项目
    • 3.4 导入module到idea
  • 4. 第四章 依赖管理
  • 5. 第五章 常用设置


Maven 自动化的构建工具
第一章 Maven简介

1.1 软件开发中的阶段

需要分析: 分析项目具体完成的功能,有什么要求, 具体怎么实现。

设计阶段:根据分析的结果, 设计项目的使用什么技术, 解决难点。

开发阶段:编码实现功能。 编译代码。自我测试

测试阶段:专业的测试人员,测整个项目的功能十分符合设计要求。出一个测试报告。

项目的打包,发布阶段: 给用户安装项目

1.2 Maven能做什么

1)项目的自动构建,帮助开发人员做项目代码的编译,测试, 打包,安装,部署等工作。

2)管理依赖(管理项目中使用的各种jar包)。

依赖:项目中需要使用的其他资源, 常见的是jar 。 比如项目要使用mysql驱动。我们就说项目依赖mysql驱动。

1.3 没有使用maven怎么管理依赖

管理jar ,需要从网络中单独下载某个jar

需要选择正确版本

手工处理jar文件之间的依赖。 a.jar里面要使用b.jar的类。

1.4 什么是maven

maven是apache基金会的开源项目,使用java语法开发。 Maven 这个单词的本意是:专家,内行。读音是['meɪv(ə)n] 或 ['mevn]。

maven是项目的自动化构建工具。 管理项目的依赖。

1.5 maven中的概念

①POM

②约定的目录结构

③坐标

④依赖管理

⑤仓库管理

⑥生命周期

⑦插件和目标

⑧继承

⑨聚合

1.6 maven工具的获取和安装

地址: http://maven.apache.org/ 从中下载 .zip文件。 使用的 apache-maven-3.3.9-bin.zip

遇到zsh: mvn -v command not found错误

解决方法:https://blog.csdn.net/CherryChenieth/article/details/123127902

安装:

  1. 确定JAVA_HOME 指定jdk的安装目录, 如果没有JAVA_HOME, 需要在windows的环境变量中创建JAVA_HOME, 它的值是jdk的安装目录

  2. 解压缩 apache-maven-3.3.9-bin.zip ,把解压后的文件放到一个目录中。

目录的路径不要有中文, 不要有空格。

  1. 把maven安装目录中下的bin的路径添加到path中

  2. 测试maven的安装。 在命令行执行 mvn -v

C:\Users\NING MEI>mvn -vApache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)Maven home: D:\tools\apache-maven-3.3.9\bin\..Java version: 1.8.0_101, vendor: Oracle CorporationJava home: C:\Program Files\Java\jdk1.8.0_101\jreDefault locale: zh_CN, platform encoding: GBKOS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"

maven解压后的目录结构

image-20201015162301261.png

maven的其他安装方式:

  1. 确定JAVA_HOME是否有效

  2. 在环境变量中,创建一个叫做M2_HOME (或者MAVEN_HOME) ,它的值是maven的安装目录

M2_HOME=D:\tools\apache-maven-3.3.9

  1. 在path环境变量中,加入 %M2_HOME%\bin

  2. 测试maven的安装,在命令行执行 mvn -v

C:\Users\NING MEI>mvn -vApache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)Maven home: D:\tools\apache-maven-3.3.9\bin\..Java version: 1.8.0_101, vendor: Oracle CorporationJava home: C:\Program Files\Java\jdk1.8.0_101\jreDefault locale: zh_CN, platform encoding: GBKOS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"

第二章Maven的核心概念

2.1 约定的目录结构

maven项目使用的大多人 遵循的目录结构。 叫做约定的目录结构。

一个maven项目是一个文件夹。 比如项目叫做Hello

Hello 项目文件夹\src\main 叫做主程序目录(完成项目功能的代码和配置文件)​ \java 源代码(包和相关的类定义)\resources 配置文件\test 放置测试程序代码的(开发人员自己写的测试代码)\java 测试代码的(junit)\resources 测试程序需要的配置文件\pom.xml maven的配置文件, 核心文件

maven的使用方式:

1)maven可以独立使用: 创建项目,编译代码,测试程序,打包,部署等等

2)maven和idea一起使用:通过idea借助maven,实现编码,测试,打包等等

2.2 POM

POM: Project Object Model 项目对象模型, maven把项目当做模型处理。 操作这个模型就是操作项目。

maven通过pom.xml文件实现 项目的构建和依赖的管理。

<project xmlns&#61;"http://maven.apache.org/POM/4.0.0" xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&#61;"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0modelVersion> <groupId>com.bjpowernodegroupId><artifactId>ch01-mavenartifactId><version>1.0-SNAPSHOTversion><properties><java.version>1.8java.version><maven.compiler.source>1.8maven.compiler.source><maven.compiler.target>1.8maven.compiler.target>properties>project>

2.3 坐标

坐标组成是 groupid, artifiactId, version。 坐标概念来自数学。·

坐标作用&#xff1a;确定资源的&#xff0c;是资源的唯一标识。 在maven中&#xff0c;每个资源都是坐标。 坐标值是唯一的。简称叫gav

<groupId>com.bjpowernodegroupId><artifactId>ch01-mavenartifactId><version>1.0-SNAPSHOTversion><packaging>jarpackaging>groupId: 组织名称&#xff0c;代码。 公司&#xff0c;团体或者单位的标识。 这个值常使用的公司域名的倒写。​ 例如&#xff1a;学校的网站 www.bjpowernode.com, groupId: com.bjpowernode​ 如果项目规模比较大&#xff0c; 也可以是 域名倒写&#43;大项目名称。​ 例如&#xff1a; www.baidu.com , 无人车&#xff1a; com.baidu.appolloartifactId:项目名称&#xff0c; 如果groupId中有项目&#xff0c; 此时当前的值就是子项目名。 项目名称是唯一的。version&#xff1a;版本&#xff0c; 项目的版本号&#xff0c; 使用的数字。 三位组成。 例如 主版本号.次版本号.小版本号&#xff0c; 例如&#xff1a; 5.2.5。​ 注意&#xff1a;版本号中有-SNAPSHOT&#xff0c; 表示快照&#xff0c;不是稳定的版本。 packaging 项目打包的类型&#xff0c; 有jar &#xff0c;war&#xff0c; ear&#xff0c; pom等等 默认是jar

项目使用gav&#xff1a;

1.每个maven项目&#xff0c;都需要有一个自己的gav

2.管理依赖&#xff0c;需要使用其他的jar &#xff0c;也需要使用gav作为标识。

搜索坐标的地址&#xff1a; https://mvnrepository.com/

2.4 依赖 dependency

依赖&#xff1a;项目中要使用的其他资源&#xff08;jar&#xff09;。

需要使用maven表示依赖&#xff0c;管理依赖。 通过使用dependency和gav一起完成依赖的使用

需要在pom.xml文件中&#xff0c;使用dependencies 和dependency&#xff0c; 还有gav 完成依赖的说明。

格式&#xff1a;

<dependencies><dependency><groupId>log4jgroupId><artifactId>log4jartifactId><version>1.2.17version>dependency><dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId><version>5.1.16version>dependency>dependencies> maven使用gav作为标识&#xff0c;从互联网下载依赖的jar。 下载到你的本机上。 由maven管理项目使用的这些jar

2.5 仓库

仓库是存东西的&#xff0c;maven的仓库存放的是&#xff1a;

  1. maven工具自己的jar包。

  2. 第三方的其他jar&#xff0c; 比如项目中要使用mysql驱动。

  3. 自己写的程序&#xff0c;可以打包为jar 。 存放到仓库。

仓库的分类&#xff1a;

1. 本地仓库&#xff08;本机仓库&#xff09;&#xff1a; 位于你自己的计算机&#xff0c; 它是磁盘中的某个目录。

本地仓库&#xff1a;默认路径&#xff0c;是你登录操作系统的账号的目录中/.m2/repository

cd ~/.m2/repository

修改本地仓库的位置&#xff1a;修改maven工具的配置文件&#xff08;maven的安装路径\conf\setting.xml&#xff09;

步骤&#xff1a;

1&#xff09;创建一个目录&#xff0c;作为仓库使用。 目录不要有中文和空格。 目录不要太深。

例如&#xff1a; D:\openrepository

2&#xff09;修改setting.xml文件&#xff0c;指定 D:\openrepository这个目录

<localRepository>D:/openrepositorylocalRepository>

3&#xff09;把仓库的资源 拷贝到 D:/openrepository

2. 远程仓库&#xff1a; 需要通过联网访问的

1&#xff09;中央仓库&#xff1a; 一个ftp服务器&#xff0c; 存放了所有的资源。

2&#xff09;中央仓库的镜像&#xff1a; 就是中央仓库的拷贝。 在各大主要城市都有镜像。

3&#xff09;私服&#xff1a;在局域网中使用的。 私服就是自己的仓库服务器。 在公司内部使用的。

maven使用仓库&#xff1a; maven自动使用仓库&#xff0c; 当项目启动后&#xff0c; 执行了maven的命令&#xff0c; maven首先访问的是本地仓库&#xff0c; 从仓库中获取所需的jar&#xff0c; 如果本地仓库没有 &#xff0c;需要访问私服或者中央仓库或者镜像。

image-20201016114322189.png

2.6 maven的生命周期&#xff0c;插件和命令

maven的生命周期&#xff1a; 项目构建的各个阶段。 包括 清理&#xff0c; 编译&#xff0c; 测试&#xff0c;报告&#xff0c;打包&#xff0c;安装&#xff0c;部署

插件&#xff1a;要完成构建项目的各个阶段&#xff0c;要使用maven的命令&#xff0c; 执行命令的功能是通过插件完成的。插件就是jar&#xff0c;一些类。

命令&#xff1a; 执行maven功能是 由命令发出的。 比如 mvn compile

单元测试&#xff08;junit&#xff09;&#xff1a;

  • junit是一个单元测试的工具&#xff0c; 在java中经常使用。
  • 单元&#xff1a;在java中指的是方法。 一个方法就是一个单元&#xff0c; 方法是测试的最小单位。
  • 作用&#xff1a;使用junit去测试方法是否完成了要求。 开发人员自测。

使用单元测试&#xff1a;

1&#xff09;加入junit的依赖&#xff08;一些类和方法&#xff09;


<dependency><groupId>junitgroupId><artifactId>junitartifactId><version>4.12version><scope>testscope>dependency>

2)在src/test/java 目录中创建测试类文件。 写测试代码

单元测试使用的建议&#xff1a;

1.测试类的定义&#xff0c; 名称一般是Test&#43;要测试的类名称

2.测试类它的包名和要测试的类包名一样。

3.在类中定义方法&#xff0c;要测试代码。
方法的定义&#xff1a;public方法&#xff0c; 没有返回值&#xff0c;方法名称自定义&#xff08;建议 Test&#43;测试的方法名称&#xff09;&#xff0c;方法没有参数

4.在测试类中的方法&#xff0c;可以单独执行。 测试类也可以单独执行

5.在方法的上面加入&#64;Test

命令&#xff1a;

1&#xff09; mvn clean: 清理命令&#xff0c; 作用删除以前生成的数据&#xff0c; 删除target目录。

插件&#xff1a; maven-clean-plugin &#xff0c; 版本是 2.5

2&#xff09;mvn compile:编译命令&#xff0c;执行的代码编译&#xff0c; 把src/main/java目录中的java代码编译为class文件。

同时把class文件拷贝到 target/classes目录。 这个目录classes是存放类文件的根目录&#xff08;也叫做类路径&#xff0c;classpath&#xff09;

插件&#xff1a; maven-compiler-plugin 版本3.1。 编译代码的插件&#xff1b;maven-resources-plugin 版本2.6 。 资源插件&#xff0c; 处理文件的。 作用是把src/main/resources目录中的文件拷贝target/classes目录中。

3&#xff09;mvn test-compile: 编译命令&#xff0c; 编译src/test/java目录中的源文件&#xff0c; 把生成的class拷贝到target/test-classes目录。同时把src/test/resources目录中的文件拷贝到 test-clasess目录

插件&#xff1a; maven-compiler-plugin 版本3.1。 编译代码的插件&#xff1b;maven-resources-plugin 版本2.6 。 资源插件&#xff0c; 处理文件的

4&#xff09;mvn test:测试命令&#xff0c; 作用执行 test-classes目录的程序&#xff0c; 测试src/main/java目录中的主程序代码是否符合要求。

插件&#xff1a; maven-surefire-plugin 版本 2.12.4

5&#xff09;mvn package:打包&#xff0c;作用是把项目中的资源class文件和配置文件都放到一个压缩文件中&#xff0c; 默认压缩文件是jar类型的。 web应用是war类型&#xff0c; 扩展是jar&#xff0c;war的。

插件&#xff1a;maven-jar-plugin 版本 2.4。 执行打包处理。 生成一个jar扩展的文件&#xff0c; 放在target目录下.

打包的文件包含的是 src/main目录中的所有的生成的class和配置文件和test无关。

生成的是 ch01-maven-1.0-SNAPSHOT.jar

<groupId>com.bjpowernodegroupId><artifactId>ch01-mavenartifactId><version>1.0-SNAPSHOTversion><packaging>jarpackaging>打包的文件名&#xff1a; artifactId-version.packaging

6&#xff09;mvn install : 把生成的打包的文件 &#xff0c;安装到maven仓库。

插件&#xff1a; maven-install-plugin 版本 2.4 。 把生成的jar文件安装到本地仓库。

查看查看中的jar文件&#xff1a;

<groupId>com.bjpowernodegroupId><artifactId>ch01-mavenartifactId><version>1.0-SNAPSHOTversion><packaging>jarpackaging>groupId中的值&#xff0c; 如果有 "." 前和后都是独立的文件夹。 com\bjpowernodeartifactId, 独立的文件夹version&#xff0c;独立的文件夹

2.7 自定义配置插件

在pom.xml文件中&#xff0c; build标签中。设置插件


<build><plugins><plugin><groupId>org.apache.maven.pluginsgroupId><artifactId>maven-compiler-pluginartifactId><version>3.8.1version><configuration><source>1.8source> <target>1.8target> configuration>plugin>plugins>build>

第三章 Maven和idea的集成

3.1 idea中集成maven

idea中有一个自带的maven。 我们要让idea使用自己安装的maven。

  1. 选择File- Settings

image-20201016151034872.png

image-20201016151528678.png

设置项&#xff1a; -DarchetypeCatalog&#61;internal

  1. File - Other Settings

image-20201016151823967.png

同上的设置

3.2 创建基于maven的普通java项目

image-20201016161028977.png

3.3 创建web项目

image-20201016170153694.png

image-20201016155925675.png

3.4 导入module到idea

image-20201017085816226.png

4. 第四章 依赖管理

依赖范围&#xff1a;使用scope表示依赖的范围。

依赖范围表示&#xff1a; 这个依赖&#xff08;jar和里面类&#xff09;在项目构建的那个阶段起作用。

依赖范围scope &#xff1a;

compile:默认&#xff0c; 参与构建项目的所有阶段test&#xff1a;测试&#xff0c;在测试阶段使用&#xff0c; 比如执行mvn test会使用junit 。provided: 提供者。 项目在部署到服务器时&#xff0c;不需要提供这个依赖的jar &#xff0c; 而是由服务器这个依赖的jar包

明显的是servlet 和jsp 依赖

5. 第五章 常用设置

1)讲的是properties它里面的配置


<properties><maven.compiler.source>1.8maven.compiler.source> 源码编译 jdk 版本<maven.compiler.target>1.8maven.compiler.target> 运行代码的 jdk 版本<project.build.sourceEncoding>UTF-8project.build.sourceEncoding> 项目构建使用的编码&#xff0c;避免中文乱码<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding> 生成报告的编码properties>

2) 全局变量

在properties定义标签&#xff0c;这个标签就是一个变量&#xff0c; 标签的文本就是变量的值。

使用全局变量表示 多个依赖使用的版本号。

使用步骤&#xff1a;

1.在properties标签中&#xff0c;定义一个标签&#xff0c;指定版本的值


<properties><project.build.sourceEncoding>UTF-8project.build.sourceEncoding><maven.compiler.source>1.8maven.compiler.source><maven.compiler.target>1.8maven.compiler.target><spring.version>5.2.5.RELEASEspring.version><junit.version>4.11junit.version>properties>

2. 使用全局变量&#xff0c; 语法 ${变量名}


<dependency><groupId>org.springframeworkgroupId><artifactId>spring-coreartifactId><version>${spring.version}version>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-webartifactId><version>${spring.version}version>dependency>

3&#xff09;使用资源插件

处理的配置文件的信息&#xff0c; maven默认处理配置文件

①&#xff1a;maven会把src/main/resources目录中的文件&#xff0c; 拷贝到target/classes目录下

②&#xff1a;maven只处理src/main/java目录中的 .java文件&#xff0c;把这些java文件编译为class&#xff0c;拷贝到 target/classes目录中。 不处理其他文件。


<build><resources><resource><directory>src/main/javadirectory><includes><include>**/*.propertiesinclude><include>**/*.xmlinclude>includes><filtering>falsefiltering>resource>resources>build>


推荐阅读
  • 导读:今天编程笔记来给各位分享关于php动态扩展怎么加载的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: ... [详细]
  • 在Android源码环境下编译系统App使用第三方jar包的方法(备忘)
    1将要使用的jar包放入App的根目录,即Android.mk所在目录2按如下方式编写Android.mk文件(########之间的行用于编译和使用jar包)LOCAL_PATH:$(ca ... [详细]
  • 本文翻译自:WhatisaMavenartifact?什么是神器?为什么Maven需要它?#1楼参考:https:sta ... [详细]
  • IDEA实用插件Lombok
    LombokLombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。通常,我们所定义的对象和b ... [详细]
  • docker是跨平台的?_跨平台构建 Docker 镜像新姿势,x86、arm 一把梭
    点击阅读原文可以获得更好的阅读体验。前言在工作和生活中,我们可能经常需要将某个程序跑在不同的CPU架构上,比如让某些不可描述的软件运行在树莓派或嵌入 ... [详细]
  • Matlab中利用mex编译Opencv实现画板绘图功能
    图形绘制是标记和可视化数据的重要方法.通过在Matlab中集成画板绘图功能,可为科学计算提供便利.1设置Matlab支持Opencv编译操作系统:麒麟14.04(基于Ubu ... [详细]
  • 这里是以spring-core模块来说明方法,对于其他的例如spring-bean等模块也适用。1.下载springframework源码github地址ÿ ... [详细]
  • rtemsapi用户指南Elixir代表了相对较新的编程语言,面向更广泛的受众。它于2011年发布,此后一直在开发中。他的主要特征是取消功能范式 ... [详细]
  • 编程语言是从哪蹦出来的——大型伦理寻根现场
    Hello,我是Alex007,一个热爱计算机编程和硬件设计的小白,为啥是007呢?因为叫Alex的人太多了,再加上每天007的生活,Alex007就诞生了。聊一聊编程到底是啥,怎 ... [详细]
  • Linux     系统安装
    Linux系统安装linux系统安装准备工作电脑、u盘、光盘、网络、硬盘主要使用光盘、网络虚拟化软件vmwarevi ... [详细]
  • 上次我们总结了React代码构建后的webpack模块组织关系,今天来介绍一下Babel编译JSX生成目标代码的一些规则,并且写一个简单的解析器,模拟整个生成的过程。我们还是拿最简 ... [详细]
  • apk简单介绍APK的组成apk安装流程app的启动过程apk打包流程AIDLAIDL介绍为什么要设计这门语言它有哪些语法?默认支持的数据类型包括什么是apk打包流程 ... [详细]
  • 问题说明最近看到Spring事务,在学习过程中遇到一个很苦恼问题搭建好Spring的启动环境后出现了一点小问题在启动时候却出现[java.lang.NullPointerExcep ... [详细]
  • pdf怎么把html变成pdf1 用AdobeAcroat8.1.2,打开网页后,页面右键菜单中会出现一个“转换为AobePDF的选项,点击就可以转换。 安装AdobeAcroba ... [详细]
  • 一、域名解析记录说明记录类型A:用来指定域名的IPv4地址(如:8.8.8.8),如果需要将域名指向一个IP ... [详细]
author-avatar
浪子一品香_938
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有