一、Maven概述
1.1 使用Maven的背景
1.1.1 一个成熟的项目需要引入大量的jar包,且jar包之间的关系错综复杂,一个jar包往往又会引用其他jar包,缺少任何一个jar包都会导致项目编译失败,并且因为jar包的数量之多难以查找。
1.1.2 Maven就是一款帮助程序员构建项目的工具,我们只需要告诉Maven需要哪些Jar 包,它会帮助我们下载所有的Jar,极大提升开发效率。
1.2什么是Maven
1.2.1 Maven是一个项目构建管理工具。 由Apache组织发布的一款开源的工具软件。Maven可以帮助我们完成 清除、编译、测试、打包、安装、部署的整个项目构建过程。
1.2.2 Maven不仅是一个项目构建工具,更是一个项目管理工具。它在项目构建工程中,比ant更全面,更灵活。Maven在进行项目构建时,它对项目目录结构拥有约定,知道你的源代码在哪里,类文件应该放到哪里去。它拥有生命周期的概念,maven的生命周期是有顺序的,在执行后面的生命周期的任务时,不需要显示的配置前面任务的生命周期。例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程。
1.2.3 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
1.2.4 Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。
1.3Maven的目录构造
1.4Maven开发的好处
1.4.1 使用Maven可以摆脱开发工具的约束 。
1.4.2 使用Maven可以帮助我们管理依赖。
1.4.3 使用Maven自动的管理依赖,从某种程度上简化了项目开发的环境维护。
1.4.4 支持远程部署。
1.4.5 使用命令快速的构建项目 。
二、 安装Maven
2.1 maven官网http://maven.apache.org/
2.2 点击Download,选择apache-maven-3.6.2-bin.zip下载
2.3 下载完成后,解压
2.4 配置环境变量
2.5 在cmd中输入 mvn -v,出现以下信息则表示成功
2.6 在E:\apache-maven-3.6.2\conf的settings.xml配置本地仓库
2.7 在E:\apache-maven-3.6.2\conf的settings.xml配置阿里仓库信息
2.8 myEclipse关于Maven的配置
三、在myEclipse创建Maven工程
创建成功,去掉隐藏的src/main/java和src/main/resource
项目至此就创建完成了。
四、Maven的核心概念
4.1 仓库
4.1.1 本地仓库 :本地仓库是指计算机磁盘上的仓库。这个需要自己从网上下载。
4.1.2 远程仓库:
maven的中心仓库 (需要去访问外网下载,速度很慢)
第三方管理的仓库 (私服)(此处我们之前在setting.xml中配置的是阿里的)
4.1.3 仓库的作用
4.2坐标
4.2.1 在maven中坐标就是为了定位一个唯一确定的jar包。
4.2.2 Maven坐标主要组成
groupId:当前Maven组织名称
artifactId:实际项目名称
version:当前项目的当前版本
4.2.3 坐标的获取: https://mvnrepository.com maven中心仓库网址
4.3pom.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">
<!-- 模型的版本 必须是4.0.0 -->
<modelVersion>4.0.0</modelVersion>
<!-- 当前项目的坐标 -->
<groupId>com.ix</groupId>
<artifactId>TestMaven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<!-- 你的项目名 -->
<name>TestMaven Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<!-- 定义的一些常量 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<!-- 指定项目需要的所有依赖坐标 -->
<dependencies>
<!-- junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
<!-- 当前jar包的有效范围
compile 【默认】 随项目发布
test 仅限测试包有效
provided 期待容器提供
runtime 运行时使用
-->
</dependency>
<!-- 引入日志jar包 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- 数据库驱动jar -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>12.1.0.1-atlassian-hosted</version>
</dependency>
<!-- 引入mybatis的jar包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<!-- jsp -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
</dependency>
<!-- 引入struts2的jar包 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.16</version>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<finalName>TestMaven</finalName>
</build>
</project>