Maven介绍
可以管理项目jar包的构建,解决jar包之间的冲突;可以对项目进行管理,比如项目打包等,maven使用pom项目对象模型进行构建项目的。
POM介绍
POM(Project Object Model 项目对象模型),是一个maven的核心配置文件(xml格式)。用于描述项目如何构建,声明项目依赖,打包运行的方式等等。它是按面向对象的思想来管理项目的(每个jar包都是一个对象,通过给对象配置不同的属性来解决jar包的使用范围、不同版本冲突等),每个maven工程中都有一个pom.xml配置文件。
Maven作用
- 项目jar包的构建
- 项目的管理(项目生命周期的管理)
比如:打包,javase项目打jar,javaweb项目打成war包,还有其他功能 - 分模块开发,Maven高级解
Maven仓库
仓库类型
官方中央仓库地址:http://repo1.maven.org/maven2/
第三方阿里云仓库:http://maven.aliyun.com/nexus/content/groups/public/
Maven
maven的坐标去仓库里面找到jar包给项目去构建
坐标的作用
可以在pom.xml配置坐标信息,坐标信息用于指向仓库里面具体jar包的位置
坐标具体含义
image.pnggroupId,对应仓库里面第一层目录
artifactId,对应仓库里面第二层目录
version,对应仓库里面第三层目录
Maven的安装与配置
实现步骤
1·下载maven(素材中提供)
2·解压完成安装
3·介绍maven服务器的目录结构
4·配置maven全局配置文件settings.xml
4.1绑定仓库
4.2绑定远程仓库,阿里云
4.3配置全局的jdk编译语言级别版本(如果不配这个,默认编译级别是1.5,太低,idea运行的会有警告)
5·设置环境变量,到处都可以使用maven的命令
6·测试是否安装配置成功,如下信息代表配置成功
image.png
Maven的生命周期常用命令1—clean与使用命令方式
生命周期命令介绍
image.png使用命令方式
方式一:传统方式使用dos命令
方式二:使用idea开发工具内置集成的maven工具操作(推荐方式)
Maven的生命周期常用命令2—其他命令
complie命令:用于对main目录下的java代码编译
test命令:先编译再运行test目录下的所有java代码,运行test目录下的java有2个要求
要求1:测试类类名必须以Test为结尾,否则只会编译不会运行
要求2:使用test目录运行测试类输出中文,默认会乱码,不建议使用test命令运行测试类,而是直接在测试类里面点击运行不会乱码。如果要解决这个乱码需要如下设置【了解】
a.设置当前项目maven码表为utf8
b.所有生命周期的命令都是使用插件完成的,要求插件必须使用最新版本
package命令:将当前项目进行打包的
intall命令:将当前项目安装到本地仓库
image.png依赖管理-依赖插件
maven的插件介绍
maven工具自带的插件,每个插件都有特殊的功能,常见知名的插件有2个
jdk编译语言级别设置插件
tomcat7插件
实现步骤
-
jdk插件用于设置编译级别【了解】
-
tomcat7插件,非常建议使用这个,因为部署项目速度快
配置插件代码
<?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>javaee117</groupId>
<artifactId>day35_03_javaweb_selfdefine_plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<!--导入jar包-->
<dependencies>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- jdk版本编译语言级别插件(了解),因为一般都采用全局settings.xml配置了,如果当前项目不使用全局就可以使用这个插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<!--tomcat7的插件,官方只提供了tomcat7,没有提供tomcat8
对比:tomcat7插件与tomcat正式服务器的区别
tomcat7插件部署速度快,有如下2个快:
A.支持webapp目录下资源修改的热部署,即修改后立即生效,不需要重新部署
B.不需要部署,服务器直接运行当前项目模块位置的代码
-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port><!--设置插件使用端口-->
<path>/</path> <!--设置项目资源部署目录的名字-->
<uriEncoding>UTF-8</uriEncoding> <!--设置get提交中文码表为utf-8,目的解决tomcat7的get方式提交中文乱码-->
<server>tomcat7</server> <!--插件服务器的名字-->
</configuration>
</plugin>
</plugins>
</build>
</project>
使用插件运行
image.png image.png对与webapp目录下的资源修改,支持热部署(修改完立刻可以看到效果,不用重新部署)
对于main目录下java和resources任何的修改,不支持热部署,需要重新部署。
推荐使用tomcat7,官方没有提供tomcat8,只能用tomcat7插件
tomcat7,get请求提交中文默认会乱码,但是这个插件解决了
依赖管理-依赖jar与依赖范围
依赖jar包
http://mvnrepository.com/ ,不会写可以在这里参照jar包的坐标依赖写法
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--指定Servlet的依赖包-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
依赖范围介绍
image.png编译classpath:在main目录下的java代码编译时可用
测试classpath:在test目录下的java代码编译时可用
运行时classpath:在运行的时候可用,才会将jar包部署到服务器上
编译时和运行时:
编译时:指将java代码编译成class文件的时候
运行时:在服务器上运行.class文件的时候
网友评论