maven详解
一、maven简介
1、概念
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model)、一组标准集合、一个项目生命周期(Project Lifecycle)、一个依赖管理系统(Dependency Management System)和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件等等。
2、原理
二、window下maven的安装
1、准备工作
解压下载好的maven,并新建repository文件夹
2、修改maven下config文件夹中settting.xml配置文件,指定repository的文件件路径
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<!-- 1.本地仓库地址改成repository文件夹的路径地址 -->
<localRepository>D:\Frame\repository</localRepository>
<!-- 2.仓库镜像下载jar包地址可换可不换 -->
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<!-- 3.jdk要改成和本机配置的jdk版本一致 -->
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
</settings>
3、配置maven环境变量
- 新建系统变量
- 设置path路径地址:即在path原来变量值之后加入”%M2_HOME%\bin”
4、验证maven是否安装成功
Window键+R==运行命令行–输入cmd
备注:检测maven是否安装成功也可以使用mvn -version命令
5、idea集成maven
- 打开全局设置
2. 找到maven进行如下设置
6、创建maven工程
- 创建工程
- 选择Maven
3. 填写工程的组名和工程名
4. 确认工程名和位置
三、maven功能介绍
<?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>
<!--组名:唯一ID名-->
<groupId>com.shun.mavenProject</groupId>
<!--工程名-->
<artifactId>mavenProject</artifactId>
<version>1.0-SNAPSHOT</version>
<!--
1、maven打包方式:放到tomcat中运行的打成war包,放到工程中使用的是jar包
备注:<packaging>jar</packaging>,执行install命令:即将maven工程打成jar包
父工程打包方式为pom
-->
<packaging>war</packaging>
<!--
2、maven的生命周期:
test:测试,将java源文件翻译成字节码文件
clean:清空,删除字节码文件
install:将maven按照指定的打包方式打包到本地仓库中去
-->
<!--4、动态抽取版本号-->
<properties>
<p6spy.version>2.1.4</p6spy.version>
<mysql.java.version>5.1.6</mysql.java.version>
</properties>
<dependencies>
<!--
3、查询依赖的写法:
网上搜jar包:直接在浏览器输入maven.aliyun,就可以通过这个平台查询所需jar包及依赖
-->
<!--引入p6spy的依赖-->
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<!--动态版本号-->
<version>${p6spy.version}</version>
</dependency>
<!--引入mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.java.version}</version>
</dependency>
</dependencies>
<!--插件:maven指定jdk版本-->
</project>
四、maven构建聚合工程
1、聚合工程:工程里面包含子工程
2、创建子工程:选中父工程右键New–>Module(选择Maven)
3、maven工程添加webapp
-
在对外访问的工程main文件夹下新建一个文件夹webapp
-
webapp下建文件夹WEB-INF
-
设置对外访问的路径及生成web.xml
4、设置工程打包方式
-
父工程打包方式:pom,子工程如果跑服务器则打包为war,子工程如果为工具类打包成jar,比如实体类的打包方式为jar。
-
子工程若不指定打包方式默认为jar,子工程会继承父工程的jar包,父工程一般不写代码,主要用来管理子工程。
<!--动态抽取版本号-->
<properties>
<p6spy.version>2.1.4</p6spy.version>
<mysql.java.version>5.1.6</mysql.java.version>
</properties>
<!--子工程不可以继承的jar包-->
<dependencyManagement>
<dependencies>
<!--引入p6spy的依赖-->
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<!--动态版本号-->
<version>${p6spy.version}</version>
</dependency>
<!--引入mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.java.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!--子工程可以继承的jar包-->
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
</dependencies>
- 子工程使用jar包,包括使用其他打包方式为jar的子工程
<dependencies>
<!--引入p6spy的依赖-->
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<!--此处不需要指定版本号,在父工程已经指定-->
</dependency>
<!--引入实体类模块依赖:实现模块之间的通信-->
<dependency>
<groupId>com.shun.java-entity</groupId>
<artifactId>java-entity</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>