Maven学习笔记(一)
前言
在2013年左右的时候Maven工具就非常火了,在IT技术日新月异的今天,Maven工具热度依然不减,可见Maven依旧是相当受欢迎的项目管理框架之一了,废话不多说,开启Maven学习之旅。
Maven是什么?
当你利用搜索引擎搜索Maven会出来很多名词:对象模型、标准集合、依赖管理系统这是啥啊?差不多得你会用了Maven才会理解这些名称吧,我找到了一个博主的博客blog.csdn.net/qq_27376871/article/details/51612742他做了不错的总结,Maven可以干什么:
1 . 帮你下载jar包
maven项目会有一个 pom.xml文件, 在这个文件里面,只要你添加相应配置,他就会自动帮你下载相应jar包,不用你铺天盖地的到处搜索你需要的jar包了 。maven都会通过:项目名-项目模块-项目版本来maven在互联网上的代码库中下载相应jar包。寻找jar的地址:http://search.maven.org
所以这就是maven的功能之一,帮你下载jar包
2 . 寻找依赖,帮你下载依赖
寻找jar包是第一基本功能,寻找依赖在这个是在这个基础上的功能。
在maven的代码库中,每一个jar包也有自己的 pom.xml文件,而这个文件里面也会有配置,什么依赖范围我就不细说了,我想表达的就是,只要你配置的jar包所依赖的其他jar包都会被maven自动下载下来。
例如:你配置了
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.6</version> </dependency>
你需要maven帮你下载spring-core-3.6.jar包 ,而这个jar包里面需要用到commons-logging.jar这个包, 这叫就依赖,spring-core-3.6.jar依赖于commons-logging.jar。 这就是maven第二个作用,帮你下载依赖包。
3 . 热部署,热编译
意思就是,在你web项目已经运行的时候,修改代码的能直接被web服务器所接受,就不需要你 重启服务器了,或者重新部署代码了,而且你可以直接通过maven 打包war或者jar项目。
此处关于Maven的介绍借鉴于博主「qq_27376871」的博客,可以上方提到的原文链接关注博主。
下载与安装
在Maven的官方网站即可下载,当前的最新版本是3.5.3:
http://maven.apache.org/download.cgi
我们这里采用的是3.3.3版本,虽然不是最新版本,但是对于初学者来讲并无大碍,新版本增添了一些新的特性,核心的东西还是那些,并不影响学习。
Windows系统的话我们下载已编译的二进制压缩包文件即可:
下载好之后我们解压后可以看到如下目录:
接下来就是安装Maven了,与安装JDK类似,首先需要新建一个Maven的环境变量:
接下来把Maven的bin目录加入到Path环境变量中,这样我们就可以通过命令行直接运行Maven命令了:
最后通过命令mvn -v 或mvn -version即可查看到Maven是否安装成功,安装成功即可看到相关版本信息:
这里还需要强调一点就是安装Maven之前务必确保正确安装了JDK,我们这里安装的maven-3.3.3必须要装JDK1.7+,否则Maven无法正常使用,关于这一点我们在官网的Documentation的Download目录下可以看到:
所以需要注意一下JDK的版本,如果你以后使用IDE去创建Maven项目的话也务必要配置好正确版本的JDK。
到此环境搭建算是完成了,简要介绍了Maven的下载与安装,下面介绍Maven的约定目录结构,一些基本命令以及如何去创建一个Maven项目。
Maven的约定目录结构
使用Maven管理项目的话,那么项目的结构目录务必要按照Maven约定的目录结构来创建项目,我们在官方文档中可以看到Maven提供的目录结构图:
简单介绍一下每个目录下应当存放的文件类型,在官网中可以看到标准的Introduction to the Standard Directory Layout,如下图所示:
显而易见,每个目录下应当放什么样类型的文件都说的很清楚了,一般情况下常用的是以下4个目录:
src/main/java:
存放项目的java类源文件,即:Xxx.java
src/main/resources:
存放项目的资源文件,如spring、mybatis的配置文件等等
src/test/java:
存放项目的用于测试的java类源文件,即:XxxTest.java
src/test/resources:
存放项目的测试相关的资源文件
在上面的上面的图中我们还看到了一个pom.xml配置文件,这个文件很重要,它是Maven的核心配置文件,我们的项目版本,jar包依赖等等都以标签的形式保存在了这个配置文件中,在官方文档中也可以具体查看关于这个文件的介绍:
我在上图中标记出来的4个元素是必须配置的4个基础元素,至于为什么,我们可以在Introduction to the POM中看一下pom.xml的Minimal POM:
显而易见,已经说的很清楚了,the minimum requirement for a POM的配置,缺一不可。如果懒得看那一大段英文的原版解释,那么我下面就简要的解释一下这4个元素的含义。
modelVersion:
描述这个pom.xml文件是遵从哪个版本的项目描述符,maven3应当设置成4.0.0
groupId:
指明了创建项目的组织的唯一标识符,一般就是包名了
artifactId:
指的是项目中的主要的模块名(primary artifact),默认命名方式是“项目名-模块名”
version:
指的是项目模块的版本,通常使用的是Maven的快照版本(例如:0.0.1-SNAPSHOT)
Maven的目录结构清楚了之后,我们现在就通过手动创建文件夹的方式去创建一个Maven结构的项目并尝试编译运行。不过在此之前我们需要一个包含文件头的pom.xml的模板文件,在哪找呢?很简单,现在许多开源项目都是通过maven去打包的,比如mybatis,我们找到mybatis的jar包,解压后可以在如下目录中看到pom.xml文件:
把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/maven-v4_0_0.xsd">
好了,现在我们就可以根据上面介绍的Maven目录和pom.xml的必备元素来手动构建一个基于Maven的java项目了。
创建基于Maven的Java项目
首先我们依据Maven约定的目录结构创建文件夹以及pom.xml文件,如下图所示,首先在src/main/java目录下创建我们的java类源文件:
代码很简单,返回一个字符串:
public class HelloWorld{ public String sayHello(){ return "Hello World!"; } }
接下来在src/test/java目录下创建用于测试的测试类java源文件:
主要用于测试HelloWorld类的sayHello方法的返回值与断言是否一致,代码如下:
public class HelloWorldTest{ @Test public void testHello(){ Assert.assertEquals("Hello World!",new HelloWorld().sayHello()); } }
这里引入了junit的jar包,Maven的一大特点就是通过pom.xml去管理jar包以及相关依赖,我们只需要在配置文件中写入依赖的相关配置,那么Maven就会自动从Maven中央仓库中将我们的jar包下载到本地仓库,关于依赖和仓库的概念后面再细说。
这里我们只需要知道我们的Maven项目不必再手动将jar包add到项目的classpath中,而是在pom.xml中声明即可,Maven会自动下载到本地。下面看看我们的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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.wl.maven01</groupId> <artifactId>maven-test</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> </dependencies> </project>
可以看到我们通过元素来声明了我们的依赖jar包,当我们编辑pom文件后保存的时候Maven就会自动去下载jar包了,这也是Maven最主要的优点之一。配置文件和java文件都写好之后,我们就可以通过Maven去编译、测试以及打包我们项目了,下篇文章展开讲解。
总结
本篇文章简单介绍了Maven的相关概念,以及讲解了Maven的约定目录结构。下一篇文章将学习Maven的三个基本命令 compile、test和package,以及了解Maven的一些核心概念。
原文发布时间为:2018-08-05
本文作者:小灯光环
本文来自云栖社区合作伙伴“ Web项目聚集地”,了解相关信息可以关注“ Web项目聚集地”。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
python编程
一.程序是什么? 程序,就是让机器按我们需求运行的一套代码。 二.编程是什么? 编程,就是编写程序。 三.编程语言是什么? 编程语言,就是编写程序的语言。 四.编程语言的发展? 机器语言(二进制语言) → 汇编语言 → 高级语言 五.编程语言的进一步理解? 编程语言,本质上就是人类与机器沟通的语言。 六.怎么沟通? 人类使用高级语言,高级语言转化为机器语言,机器语言告诉机器做什么。 七.python是什么? python,是一种高级编程语言,发明于1991年。它的特点是:简单,直接,明确。 八.python的语法结构 1.执行语句 2.代码块:使用缩进来表示代码块。同一代码块,必须同缩进空格数。(这是python一大特色) 3.注释:以#开头的语句。 九.python的执行原则 1.从上到下,顺序执行 2.英文字母,大小写敏感 3.命名有特定的规范 十.python代码示例 import random #导入随机模板 #天才生成函数 def creategenius( name ): rate = random.randint(1, 99) #条件结构 if rate < 50:...
- 下一篇
一次线上问题排查所引发的思考
前言 之前或多或少分享过一些内存模型、对象创建之类的内容,其实大部分人看完都是懵懵懂懂,也不知道这些的实际意义。 直到有一天你会碰到线上奇奇怪怪的问题,如: 线程执行一个任务迟迟没有返回,应用假死。 接口响应缓慢,甚至请求超时。 CPU 高负载运行。 这类问题并不像一个空指针、数组越界这样明显好查,这时就需要刚才提到的内存模型、对象创建、线程等相关知识结合在一起来排查问题了。 正好这次借助之前的一次生产问题来聊聊如何排查和解决问题。 生产现象 首先看看问题的背景吧: 我这其实是一个定时任务,在固定的时间会开启 N 个线程并发的从 Redis 中获取数据进行运算。 业务逻辑非常简单,但应用一般涉及到多线程之后再简单的事情都要小心对待。 果不其然这次就出问题了。 现象:原本只需要执行几分钟的任务执行了几个小时都没退出。翻遍了所有的日志都没找到异常。 于是便开始定位问题之路。 定位问题 既然没办法直接从日志中发现异常,那就只能看看应用到底在干嘛了。 最常见的工具就是 JDK 自带的那一套。 这次我使用了jstack来查看线程的执行情况,它的作用其实就是 dump 当前的线程堆栈。 当然在 d...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,CentOS7官方镜像安装Oracle11G
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS6,7,8上安装Nginx,支持https2.0的开启