Maven:基础知识
Maven
- 概念图
- 生命周期
- 目录
- 工程创建
- 测试
- 常用命令
- COMPILATION ERROR : 不再支持目标选项 5。请使用 7 或更高版本。
- 问题解决
- pom.xml文件
- properties配置示例
- scope配置详解
概念图
- 依赖管理
- 构建项目
- Maven 的底层核心实现项目的构建和管理必须通过插件完成,但插件本身并不包含在其核心程序当中。
生命周期
在 Maven 中,它拥有三套标准的生命周期,分别为CleanLifeCycle、DefaultLifeCycle 和 SiteLifeCycle 。每一套生命周期互相独立、互不影响。另外,每套生命周期包含一系列的构建阶段,这些阶段是有顺序的,会按照顺序执行(即执行后面的阶段会先自动执行前面的阶段)。
- CleanLifeCycle:清理的生命周期
- DefaultLifeCycle:默认的生命周期
- SiteLifeCycle:站点的生命周期
目录
在 Maven 中,所有文件的存放目录都有明确的约定。标准目录结构如下:
目录名 | 含义 |
---|---|
项目根/ | 项目目录根 |
pom.xml | 项目对象模型(Project Object Model),Maven项目中的文件 |
src/ | 源代码目录根 |
main/ | 项目主体目录根 |
java | 源代码目录 |
resources | 所需资源目录 |
filters | 资源过滤文件目录 |
assembly | Assembly descriptors |
config | 配置文件目录根 |
test/ | 项目测试目录根 |
java | 测试代码目录 |
resources | 测试所需资源目录 |
filters | 测试资源过滤文件目录 |
site | 与site相关的资源目录 |
target/ | 输出目录根 |
classes | 项目主体输出目录 |
test-classes | 项目测试输出目录 |
site | 项目site输出目录 |
工程创建
创建的工程分为两类:一是Java项目,二是Web项目。创建命令如下:
<1>. Java项目:
mvn archetype:generate -DgroupId=JavaProjectPackage -DartifactId=JavaProjectName -DarchetypeArtifactId=maven-archetype-quickstart
<2>. Web项目:
mvn archetype:generate -DgroupId=WebProjectPackage -DartifactId=WebProjectName -DarchetypeArtifactId=maven-archetype-webapp
其中,属性含义:
-DgroupId:包名
-DartifactId: 项目名
-DarchetypeArtifactId: 项目类型
注: 一定要按照标准目录结构来构建工程。
测试
我们先使用命令行窗口在桌面上对 Maven 项目进行创建。步骤如下:
打开命令行窗口,进入桌面,输入命令:
//1.Java项目
mvn archetype:generate -DgroupId=cn.edu.MavenStudy -DartifactId=MavenJavaProjectTest -DarchetypeArtifactId=maven-archetype-quickstart//2.Web项目
mvn archetype:generate -DgroupId=cn.edu.MavenStudy -DartifactId=MavenWebProjectTest -DarchetypeArtifactId=maven-archetype-webapp
若是第一次创建,需要耐心等待 Maven 下载相应资源到本地仓库上(repository 文件)。如图:
所需的资源,如图:
再创建Web项目,如图:
常用命令
命令 | 作用 |
---|---|
mvn compile | 编译,将源代码编译成字节码文件(.class) |
mvn clean | 清除,删除编译的目标文件target |
mvn test | 测试,运行test包下的单元测试类(其方法名约定为XxxxTest) |
mvn package | 将项目打包,文件存储在项目根目录的target目录中(Java项目打包成 jar文件,Web项目打包成 war文件) |
mvn install | 将一个工程打包成 jar文件,存储在本地仓库里 |
mvn deploy | 若有私服,打包后上传到私服 |
mvn source:jar | 源码打包 |
mvn dependency:sources | 下载 jar包的源代码 |
mvn site | 查看报告和操作流程 |
COMPILATION ERROR : 不再支持目标选项 5。请使用 7 或更高版本。
在使用命令过程中,遇到了错误,如图:
原因:JDK版本不匹配。
问题解决
首先,打开命令行窗口,输入命令:java -version ,查看版本信息。如图:
找到 Maven/apache-maven-3.8.6/conf 目录下的 settings.xml 文件进行修改配置:
//根据本机JDK版本,添加以下配置:
<profile> <id>jdk-16.0.2</id><activation><activeByDefault>true</activeByDefault><jdk>16</jdk></activation><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>16</maven.compiler.source><maven.compiler.target>16</maven.compiler.target><maven.compiler.compilerVersion>16</maven.compiler.compilerVersion></properties>
</profile>
如图:
再次使用命令,成功执行。如图:
pom.xml文件
pom.xml为当前Maven项目配置文件,定义项目的基本信息,用于描述项目的maven坐标,依赖关系等。
一般情况下,Maven是通过groupId、artifactId、version这三个元素值(俗称坐标)来检索该构件, 然后引入工程。若要引用项目(已开发完毕并发布到远程仓库),则在pom.xml文件中新建一个dependency节点,将本项目的groupId、artifactId、version写入, Maven便会把jar包下载到本地 。接下来,简单介绍pom.xml文件。
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><!-- 基本配置 --><!-- 声明pom文件遵循POM模型的某个版本(必不可少,且对于Maven2与Maven3只能是4.0.0)--><modelVersion>4.0.0</modelVersion><!-- 定义当前项目隶属的实际项目组 --><groupId>cn.edu.MavenProject</groupId><!-- 定义当前项目的名称,主要区分一个groupId的多个项目 --><artifactId>MavenJavaProject</artifactId><!-- 定义当前项目所处的版本号(SNAPSHOT:测试版本;RELEASE:发布版本)--><version>1.0.0-SNAPSHOT</version><!-- 定义打包的类型(默认为jar,jar:Java项目;war:Web项目;pom:父级项目 )--><packaging>jar</packaging><!-- 定义pom常量,便于在pom中的直接引用 --><properties><demo.version>4.11</demo.version></properties><!-- 定义构件输出的附属构件,有时需要加上classifier才能唯一的确定该构件,否则会报错查找不到 --><classifier>...</classifier><!-- 定义当前项目的依赖关系 --><dependencies><!-- 每个dependency对应着一个jar包 --><dependency><!-- 坐标信息 --><groupId>org.apache.commons</groupId> <!-- 组织名称 --><artifactId>commons-lang3</artifactId> <!-- jar包名称 --><version>3.8.1</version> <!-- 版本号 --><!-- 定义Jar包的使用范围 --><scope>test</scope><!-- 设置指依赖是否可选,默认为false --><optional>false</optional><!-- 屏蔽依赖关系 --><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></exclusion></exclusions></dependency></dependencies><!-- 构建配置 --><build><!-- 构件的文件名,默认值为${artifactId}-${version} --><finalName>ProjectName</finalName><!-- 统一管理插件 --><pluginManagement><!-- 使用插件的列表 --><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version> <!-- 指定构建生命周期的阶段执行插件的配置 --><executions><execution><!-- 执行目标的标识符,用于标识构建过程中的目标或匹配继承过程中需要合并的执行目标 --><id>execution-id</id><!-- 指定目标的构建生命周期阶段,默认为目标被绑定到源数据里配置的阶段 --><phase>package</phase><!-- 配置的执行目标 --><goals><goal>demo-goal</goal></goals><!-- 配置是否被子POM继承 --><inherited>false</inherited></execution></executions><!-- 是否从该插件下载Maven扩展 --><extensions></extensions></plugin></plugins></pluginManagement></build><!-- 分发配置 --><!-- 执行mvn deploy,将项目生成的构件分发到远程Maven仓库,分发到远程Maven仓库之后,所有能访问该仓库的用户都能使用你的构件。 --><distributionManagement> <!-- 项目生成的构件到远程仓库所需的信息 --><repository> <!-- 是否设置唯一版本号(由时间戳和构建流水号组成) --><uniqueVersion>true</uniqueVersion><!-- 目标仓库的id --><id>repository-id</id> <!-- 目标仓库的名字 --><name>repository-name</name><!-- 目标仓库的网址 --><url>file://${basedir}/target/deploy</url> </repository><!-- 测试版仓库 --><snapshotRepository><uniqueVersion/><id/> <name/> <url/> </snapshotRepository> </distributionManagement> <!-- 仓库配置 --><!-- 远程仓库列表 --><repositories><!-- 连接远程仓库的信息 --><repository><!-- 处理远程仓库 正式发布版本 的下载 --><release><!-- 是否下载某种类型构件 --><enabled/><!-- 指定更新的频率 --><updatePolicy/><!-- Maven验证构件失败的处理 --><checksumPolicy/></release><!-- 处理远程仓库 快照版本 的下载(快照是一种特殊的版本,指定了某个当前的开发进度的副本) --><snapshots><enabled/><updatePolicy/><checksumPolicy/> </snapshots><!-- 远程仓库唯一标识符,可以匹配settings.xml文件的远程仓库 --><id>repository-id</id> <!-- 远程仓库名称 --><name>repository-name</name><!-- 远程仓库网址(形式为protocol://hostname/path) --><url>repository-url</url><!-- 指定仓库布局类型(default:默认,legacy:遗留) --><layout></layout></repository></repositories>
</project>
properties配置示例
<!-- 定义pom常量,便于在pom中的直接引用 -->
<!-- 示例 -->
<properties><demo.version>4.11</demo.version>
</properties>
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${demo.version}</version><scope>test</scope>
</dependency>
scope配置详解
maven认为,程序对外部的依赖会随着程序的所处阶段和应用场景而变化,所以maven中的依赖关系有作用域(scope)的限制。
scope值如下:
- compile(编译范围):默认值,表示被依赖项目需要参与项目的编译、测试、运行、打包、发布。
- runtime(运行时范围):表示被依赖项目不参与项目的编译。
- test(测试范围):表示被依赖项目仅参与项目测试相关的工作(包括测试代码的编译和执行,但不会被打包和部署)。
- provided(已提供范围):表示被依赖项目参与项目的编译、测试和运行,而其他依赖由JDK或容器提供。
- system(系统范围):与 provided 相似,但不依赖Maven仓库,而是必须使用systemPath属性指定本地文件系统获取。
相关文章:
Maven:基础知识
Maven概念图生命周期目录工程创建测试常用命令COMPILATION ERROR : 不再支持目标选项 5。请使用 7 或更高版本。问题解决pom.xml文件properties配置示例scope配置详解概念图 依赖管理构建项目Maven 的底层核心实现项目的构建和管理必须通过插件完成,但插件本身并不包…...
Web 框架 Flask 快速入门(一)flask基础与模板
前言 课程地址:Python Web 框架 Flask 快速入门 文章目录前言🌴 Flask基础和模板🌷 一个简单的flask程序🌼 模板的使用🌴 Flask基础和模板 1、web框架的作用 避免重复造轮子,app程序不必关心于服务器的沟…...
1CN/Jaccard/PA/AA/RA/Katz/PageRank/SimRank
common neighbors(CN) 公共邻居的数量。 Jaccard 用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。 preferential attachment(PA) 节点倾向于连接到节点度较高的节点上,&…...
YOLOv5-Backbone模块实现
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章地址: 365天深度学习训练营-第P8周:YOLOv5-Backbone模块实现🍖 作者:K同学啊一、前期准备1.设置GPUimport torch from torch impor…...
【C语言】程序环境和预处理
🌇个人主页:平凡的小苏 📚学习格言:别人可以拷贝我的模式,但不能拷贝我不断往前的激情 🛸C语言专栏:https://blog.csdn.net/vhhhbb/category_12174730.html 小苏希望大家能从这篇文章中收获到许…...
9.关系查询处理和查询优化
其他章节索引 梳理 名词解释 代数优化:是指关系代数表达式的优化,也即按照一定规则,通过对关系代数表达式进行等价变换,改变代数表达式中操作的次序和组合,使查询更高效物理优化:是指存取路径和底层操作算…...
计算机组成原理(三)
5.掌握定点数的表示和应用(主要是无符号数和有符号数的表示、机器数的定点表示、数的机器码表示); 定点数:小数点位置固定不变。 定点小数:小数点固定在数值位与符号位之间; 定点整数:小…...
C. Least Prefix Sum codeforces每日一题
🚀前言 🚀 大家好啊,这里是幸麟 🧩 一名普通的大学牲,最近在学习算法 🧩每日一题的话难度的话是根据博主水平来找的 🧩所以可能难度比较低,以后会慢慢提高难度的 🧩此题标…...
ASEMI三相整流模块MDS100-16图片,MDS100-16尺寸
编辑-Z ASEMI三相整流模块MDS100-16参数: 型号:MDS100-16 最大重复峰值反向电压(VRRM):1600V 最大RMS电桥输入电压(VRMS):1700V 最大平均正向整流输出电流(IF&#…...
【第37天】斐波那契数列与爬楼梯 | 迭代的鼻祖,递推与记忆化
本文已收录于专栏🌸《Java入门一百例》🌸学习指引序、专栏前言一、递推与记忆化二、【例题1】1、题目描述2、解题思路3、模板代码4、代码解析5.原题链接三、【例题1】1、题目描述2.解题思路3、模板代码4、代码解析5、原题链接三、推荐专栏四、课后习题序…...
Map集合
Map集合 Map接口的简介 Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。 Map 没有继承 Collection 接口,…...
PyQt5编程扩展 3.2 资源文件的使用
目录 本例运行效果: 设计Qt窗体 建立项目 放一个Group Box 放三个Label 放一个Horizontal Slider 放两个Line Edit 层次结构 布局 放一个Group Box 放两个Label 放两个Line Edit 放一个Push Button 层次结构 布局 放一个frame 层次结构 布局 窗体…...
Linux系统之文件共享目录设置方法
Linux系统之文件共享目录设置方法一、本次实践目的二、检查本地系统环境1.检查系统版本2.检查系统内核三、创建相关用户及用户组1.创建共享目录2.创建测试用户账号3.创建用户组4.设置用户的属组5.查看admin和IT用户组成员6.查看所有用户信息四、共享目录权限设置1.设置/data/so…...
上海亚商投顾:三大指数均涨超1% 芯片板块集体大涨
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。市场情绪三大指数今日低开高走,午后集体涨超1%,创业板指盘中涨超1.7%。芯片板块集体大涨,…...
Harbor私有仓库部署与管理
目录 前言 一、Harbor概述 二、Harbor 的特性 三、Harbor的构成 四、Harbor构建Docker私有仓库 1、环境配置 2、案例需求 3、部署Harbor服务 3.1、部署docker compose服务 3.2 下载或上传Harbor安装程序 3.3、启动Harbor 3.4、查看Harbor启动镜像 4、物理机访问se…...
互联网架构之 “高可用” 详解
一、什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 假设系统一直能够提供服务,我们说系统的可用性是100%。 如果系统每运行…...
分布式高级篇4 —— 商城业务(2)
一、订单服务1、订单基本概念2、订单基本构成3、订单状态4、订单流程5、配置拦截器拦截订单请求6、订单确认页模型抽取7、订单确认页vo封装8、Feign 远程调用请求头丢失问题\*\*\*\*\* 惨痛教训9、Feign 异步调用请求头丢失问题10、查看库存状态11、模拟计算运费12、接口幂等性…...
二分查找基本原理
二分查找基本原理1.二分查找1.1 基本概念1.2 二分查找查找步骤1.2.1 中间索引不能整除,取整数作为中间索引1.2.2 索引不能整除,整数1作为中间索引1.3 二分查找大O记法表示2. 二分查找代码实现1.二分查找 1.1 基本概念 二分法(折半查找)是一…...
【Python实战案例】Python3网络爬虫:“可惜你不看火影,也不明白这个视频的分量......”m3u8视频下载,那些事儿~
前言 哈喽!上午好嘞,各位小可爱们!有没有等着急了呀~ 由于最近一直在学习新的内容,所以耽搁了一下下,抱歉.jpg 双手合十。 所有文章完整的素材源码都在👇👇 粉丝白嫖源码福利,请移…...
UE4:使用样条生成随机路径,并使物体沿着路径行走
一、关于样条的相关知识 参考自:样条函数 - 馒头and花卷 - 博客园 三次样条(cubic spline)插值 - 知乎 B-Spline(三)样条曲线的性质 - Fun With GeometryFun With Geometry 个人理解的也不是非常深,但是大概要知道的就是样条具…...
计算机组成原理(判断题)
计算机控制器是根据事先编好的程序,根据其指令来进行控制只会每一步骤的操作; 面向主存的双总线结构计算机系统,因在CPU与主存之间增加了一组存储器总线,由于通过存储器总线访存,提高了CPU的访存速度,也减轻…...
error: failed to push some refs to ... 就这篇,一定帮你解决
目录 一、问题产生原因 二、解决办法 三、如果还是出问题,怎么办?(必杀) 一、问题产生原因 当你直接在github上在线修改了代码,或者是直接向某个库中添加文件,但是没有对本地库同步,接着你想…...
DAMA数据管理知识体系指南之数据仓库和商务智能管理
第9章 数据仓库和商务智能管理 9.1简介 数据仓库(Data Warehouse,DW)由两个主要部分构成:首先是一个整合的决策支持数据库,其次是用于收集、清洗、转换、存储来自于各种操作型数据源和外部数据源数据的相关软件程序。两者结合以支持历史的、…...
PHP的五种常见设计模式
工厂模式 最初在设计模式 一书中,许多设计模式都鼓励使用松散耦合。要理解这个概念,让我们最好谈一下许多开发人员从事大型系统的艰苦历程。在更改一个代码片段时,就会发生问题,系统其他部分 —— 您曾认为完全不相关的部分中也有…...
教你搞懂线段树,从基础到提高
秋名山码民的主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 🙏作者水平有限,如发现错误,还请私信或者评论区留言! 目录前言线段树逻辑概念线段树的俩个重要用处代码实现线段树题目巩固最后…...
C语言进阶——自定义类型:结构体
🌇个人主页:_麦麦_ 📚今日名言:生活不可能像你想象的那么好,也不会像你想象的那么糟。——莫泊桑《羊脂球》 目录 一、前言 二、正文 1结构体 1.1结构体的基础知识 1.2结构的声明 1.3特殊的声明 1.4结构体变量的…...
SpringSecurity学习笔记01
目录 一、课程介绍 二、框架概述 三、入门案例 四、基本原理(过滤器链) 五、基本原理(过滤器加载过程) 六、基本原理(两个重要的接口) 七、web权限方案-用户认证(设置用户名密码上) 八、…...
Python语言零基础入门教程(十一)
Python 列表(List) 序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。 Python有6个序列的内置类型,但最常见的是列表和元组。 序列都可以…...
现货白银基础知识
任何活动,任何项目,任何工作都离不开基础知识,这是肯定的。万丈高楼平地起,要想要简称百层高楼,首先得把低级打好!现货白银投资也是一样的道理,现在我们就来一起聊聊现货白银基础知识的问题&…...
数据库原理及应用基础知识点
数据库原理基础知识点大全数据库原理及应用1、数据库系统概述1.1 基本概念1.2 数据模型1.3 数据库系统的结构2、实体 -- 联系模型2.1 基本概念2.2 实体-联系图2.3 弱实体集3、关系数据模型3.1 关系数据库的结构3.2 从ER模型到关系模型3.3 关系操作、完整性约束、关系代数4、关系…...
国家信用信息系统年报/专业seo优化公司
public function index(){$cate 1; $query M(Cate)->field(id)->where(array(id>$cate,pid>$cate,_logic>OR))->buildSql();//在一个表中获得栏目的id $goods M(Goods)->where(cate_id in . $query)->select(); //在另一个表获得属于这些栏目的文…...
网站怎么做伪静态iis7.0/关键词优化顾问
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Android studio 2.3.3 这两天一直在调试一个BUG,具体为通过 NativeC 来处理上层Android Java传递的字节数组 byte[]。通过查阅 Oracle手册 确认JNI 与底层 C 或者 CPP 进行交互的细节。 从Java传递数组…...
新闻cms静态网站模板下载/网络营销师官网
#禁用gpu版本TensorFlow,因为CUDA号码从0开始,这里直接让CUDA使用-1的GPU,自然就无法使用gpu了。 代码前面加入: import os os.environ["CUDA_VISIBLE_DEVICES"]"-1" import tensorflow as tf Environm…...
深圳大眼睛网站建设/b2b电子商务网站
SpringCloud(第 018 篇)Zuul 服务 API 网关微服务之代理与反向代理 - 一、大致介绍 1、API 服务网关顾名思义就是统一入口,类似 nginx、F5 等功能一样,统一代理控制请求入口,弱化各个微服务被客户端记忆功能࿱…...
湖北响应式网站建设/百度文库首页
笔记本电脑鼠标动不了怎么办(鼠标没反应怎么解决)鼠标和键盘一样,是辅助我们进行电脑操作的设备,使用没有鼠标的笔记本需要很长时间适应,使用鼠标比较方便,为笔记本配置了一个鼠标,但是比起台式机的鼠标,笔…...
wordpress文自定义栏目在哪里/网络软文怎么写
原文链接:http://bbs.fishc.com/thread-88628-1-1.html 转载于:https://www.cnblogs.com/wuyuan2011woaini/p/7007705.html...