教小师妹快速入门Maven,嘿嘿嘿...

回复“面试”获取全套面试资料

最近,小师妹给我发消息,说她在某个项目中看到了Maven,感觉还挺小巧精致的,很有兴趣深入学习一下,问我有没有什么快速入门的教程~刚好自己也在整理Maven相关的材料,那就拿出来一起交流一下吧。今天主要聊聊Maven的快速入门,很多人可能会觉得很简单,但相信您认真看完的话还是会有新滴收获的。

基本介绍

概念

Maven字面义和准确的发音:

Maven是Apache下面的一个java开发的开源项目,官网地址:https://maven.apache.org/

官方介绍:

大致意思是:Maven是一个意第绪(Yiddish),意思是知识的积累者,最初是为了简化Jakarta Turbine项目的构建过程。有几个项目,每个项目都有自己的 Ant 构建文件,它们都略有不同。而JAR文件都由CVS来维护 。我们需要一种标准的方法来构建项目,一个项目组成的清晰定义,一种发布项目信息的简单方法,以及一种跨多个项目共享jar的方法。

Maven的目标

Maven的主要目标是为了使开发人员在最短的时间内领会项目的所有状态。为了达到这一目标,Maven考虑一下五个方面的内容:

1、使得构建过程更加容易,方便编译、打包、发布

2、为每个项目提供统一的配置

3、提供优质项目信息

4、最佳开发实践

5、安装和更新第三插件透明化

Maven项目的结构和内容是在一个XML文件中声明,pom.xml的项目对象模型(POM),这是整个Maven系统的基本单元。

Maven的优点

  • Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定。
  • Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程
  • 只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮我们处理其他事情
  • 使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。

面试问:Maven是什么

Maven(翻译为"专家","内行")是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。

项目构建过程

项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。

理想的项目构建是高度自动化,跨平台,可重用的组件,标准化的,使用maven就可以帮我们完成上述所说的项目构建过程。

安装与配置

从官网下载:

http://maven.apache.org/download.cgi

最新版本是3.6.3。

Maven3.3+版本必须是是JDK1.7或者更高的版本。

解压后(解压后的目录中最好「不要出现中文目录」):

目录说明

  • bin:含有mvn运行的脚本
  • boot:含有plexus-classworlds类加载器框架
  • conf:含有settings.xml配置文件
  • lib:含有Maven运行时所需要的java类库
  • LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍

安装

首先要确保电脑上已经安装了JDK(要jdk 1.7或更高的版本),配置好JDK的环境变量,使用如下的两个命令检查检查JDK安装的情况。

配置

JDK已经安装好了,maven也已经解压了到我们制定的目录下,比如说:我的解压目录为:

D:\tool\maven\apache-maven-3.6.3

接下来就是配置环境变量(和安装JDK有点像,但是配置Maven简单点)。

第一步:设置环境变量:MAVEN_HOME。

确定后:

第二步:设置环境变量Path,将;%MAVEN_HOME%\bin加入Path中,一定要注意要用分号;与其他值隔开,如下图所示:

第三步:验证和配置是否成功,打开cmd窗口。有的电脑系统版本中看不到cmd窗口,需要在搜索里搜索cmd。有的就是有个“运行”。

或者

输入"mvn –v"命令 查看Maven的相关信息,如下图所示:

输出是上面的这个样子,证明我们的Maven安装和相关配置都已经成功了。下面我们就来玩一把Maven。

案例

Maven项目约定结构

大概的目录如下:

约定配置说明:

目录 目的
${basedir} 存放pom.xml和所有的子目录
${basedir}/src/main/java 项目的java源代码
${basedir}/src/main/resources 项目的资源,比如说property文件,springmvc.xml
${basedir}/src/test/java 项目的测试类,比如说Junit代码
${basedir}/src/test/resources 测试用的资源
${basedir}/src/main/webapp/WEB-INF web应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面
${basedir}/target 打包输出目录
${basedir}/target/classes 编译输出目录
${basedir}/target/test-classes 测试编译输出目录
Test.java Maven只会自动运行符合该命名规则的测试类
~/.m2/repository Maven默认的本地仓库目录位置

接下来我们就来搞一个案例。

案例

在自己的本地创建一个目录(一般都是workspace)。然后创建一个maven-demo的案例。新建maven-demo文件夹:

在maven-demo文件夹里创建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">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.tian</groupId>
    <artifactId>maven-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
</project>

继续创建文件夹src(存放源码的文件夹)。

进入src目录中,继续创建main文件夹。

再到main文件夹里创建一个java文件夹。

在java文件夹下创建一个HelloWorld.java

public class HelloWorld{
 public static void main(String [] args){
  System.out.println("老田 你好");
 }
}

回到maven-demo的目录下,按住Shift键,鼠标右键,选择打开命令窗口。

使用'「mvn compile」'命令:

编译完成后,会在当前目录下增加了一个target目录。

打开target文件夹,可以看到里面有一个classes文件夹,如下图所示:

classes文件夹存放的就是编译成功后生成的.class文件,如下图所示:

使用‘「mvn clean」’命令:

发现有一行日志:

我们使用mvn clean命令的时候,会把target文件夹删掉。

修改仓库

在前面的约定配置中有一项:

~/.m2/repository  

Maven默认的本地仓库位置。

repository中存放了相关的jar包。因为代码运行时通常需要依赖其他的jar里的东西,所以这个jar也得需要管理。关于仓库后面有文章专门讲解。

比如说:

全目录为:

C:\Users\Administrator\.m2\repository\junit\junit\3.8.1

发现在C盘,这里强烈的建议,把这个仓库放在自己指定的目录,比如说:E:/repository下面。

如何修改呢?

找到我们前面安装maven目录下:

D:\tool\maven\apache-maven-3.6.3

在conf目录下的server.xml:

打开server.xml文件:

我们添加一项

<localRepository>E:/repository</localRepository>

修改完后,保存。

后面只要我们再次执行"mvn compile"和"mvn clean"这两个命令时,Maven会去中央仓库下载需要的jar包,而第二次执行这两个命令时,由于所需的jar包已经在本地的仓库E:/repository中存储,所以就可以直接拿来用了,这样就省去了去中央仓库下载jar包的时间。

setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件;

以上便是今天分享的Maven入门课程。

总结

本文讲述了什么是Maven、Maven的优点、安装配置、简单使用案例、mvn compile命令和mvn clean命令的使用以及修改本地仓库。

学习不是为了学到已经有的知识,而是为了探索知识的空白领域!愿每个人都能享受学习~

推荐阅读

怒肝一夜 | Mybatis源码深度解析
Redis热点:如何发现Key问题?附5种解决方案
《七周七并发模型》.pdf
(0)

相关推荐