Maven教程--下(包括手动实现)
前言
注意本篇是需要一定的maven基础的 如果没有请移步Maven教程--上
手动创建Maven 项目- 理解Maven 底层机制
需求说明/图解
用手工的方式,创建maven 项目, 深刻理解Maven 工作机制
完成功能-说明
- 编写一个类, 有一个方法sum,可以返回两个数的和
- 编写测试类TestSum, 可以测试sum 是否正确.
- 使用指令完成Maven 的编译(complile)、测试(test)、打包(package)、安装(install)、清理(clean)等操作
手写方式
完成代码编写
- 先根据maven 项目的结构要求,在d 盘: 创建项目结构(如图)
- 创建\Hello.java ,说明: 这个文件可以手写, 也可以从快速入门项目拷贝一份.
public class Hello {
public String sum(int n1, int n2) {
System.out.println("sum= " + (n1 + n2));
return "sum= " + (n1 + n2);
}
}
- 创建HelloTest.java,说明: 这个文件可以手写, 也可以从快速入门项目拷贝一份, 同时注意这个文件是在src\test.... 下的..
public class HelloTest {
@Test
public void testSum() {
Hello hello = new Hello();
String res = hello.sum(1, 9);
//使用断言
/**
* 1.Assert 是一个断言类,(就是判断实际返回的值和期望值是否相同)
* 2.如果res 和 "sum=10" 是相同的,则通过断言
* 3.如果res 和 "sum=10" 是不相同的,则给出提示
*
*/
Assert.assertEquals("sum=10", res);
}
- 创建pom.xml, 从快速入门项目拷贝一份即可. 放在和src 同级目录即可, 提示:使用记事本来保存, 保证该文件的编码是utf-8
<!--
解读:modelVersion
1. 描述这个pom文件/pom模型遵循的哪个版本
2. 对应maven2 和 maven3 而言, 这里的modelVersion只能是4.0.0
-->
<modelVersion>4.0.0</modelVersion>
<!--
解读: 下面是指定该项目的坐标, 是创建项目时,程序员指定
1. groupId: 组织名
2. artifactId: 项目名
3. version: 版本
-->
<groupId>com.wedu</groupId>
<artifactId>java-project-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<!--
解读
1. 这里就是引入项目需要的jar包, 类似传统项目的import jar的作用
2. 在 dependencies标签内, 可以指定多个需要依赖的jar /导入jar
3. 引入的jar包需要一个完整的jar包坐标, 从mvn仓库查询得到
-->
<dependencies>
<dependency>
<!-- 依赖jar的 groupId : 组织名-->
<groupId>junit</groupId>
<!-- 依赖jar的 artifactId : 项目名-->
<artifactId>junit</artifactId>
<!-- 依赖jar的 version : 版本-->
<version>4.12</version>
</dependency>
完成编译
- 执行如下指令,完成maven 项目的编译,会得到源代码对应的class 文件(如图)
- 编程成功,会自动创建target 目录,并生成对应的.class 文件(如图)
- 细节说明: 第一次速度慢,需要下载相关jar,后面就快了.
完成测试
- 执行如下指令,完成maven 项目的测试,(如图)
- 测试指令执行完毕,会生成Test 源文件的class , 还会输出测试结果.
- 细节说明: 第一次速度慢,需要完成一些初始化工作,后面就快了.
完成打包
- 执行如下指令,完成maven 项目的打包,输出jar, 可以供其它模块使用(如图)
- 打包后,在target 目录生成对应的打包文件jar
完成安装
- 为了演示方便, 把当前maven 的settings.xml 的仓库恢复到默认的, 修改D:\program\apache-maven-3.6.3-bin\apache-maven-3.6.3\conf\settings.xml
- 执行install 指令,能完成maven 项目的安装,会把打包得到的jar, 提交到本地仓库
- 说明: 如果没有修改settings.xml 成默认的仓库路径, install 后, 生成的jar 会在指定的仓库路径下.
- 注意当把hello-project-1.0.jar 提交到本地仓库后,该jar 也可以被其他maven 项目使用了,非常方便
完成清理
- 执行如下指令,完成maven 项目的清理,会清除生成的target 目录
- 应用场景,比如我们希望把源码进行拷贝或移植, 或者希望来一次全新的bulid,就可以先进行clean
小结Maven 构建指令
● 说明: Maven 构建命令使用mvn 开头,后面添加功能参数,可以一次执行多个命令,使用空格分隔
mvn compile #编译
mvn clean #清理
mvn test #测试
mvn package #打包
mvn install #安装
IDEA 创建Maven Web 工程
需求说明/图解
使用IDEA 创建Maven WEB 项目, 可以运行hello,world 页面
注意体会Maven WEB 项目和前面创建的Maven java 项目不同
创建Maven web 项目
创建maven web 工程
web-hello-maven 工程
创建成功的maven web 项目结构
创建的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>
<!--
解读
1. groupId 、artifactId、version就是 maven项目坐标
2. packaging: 打包方式,默认是jar, 因为当前是web项目,所以这里打包成war
-->
<groupId>com.wyxedu</groupId>
<artifactId>web-hello-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>web-hello-maven Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<!-- maven项目的属性, 根据实际情况,可以修改 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- 默认引入的jar -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<!--默认引入的maven插件, 前面说过mvn的各种指令compile/install/test等都是由插件完成的 -->
<build>
<finalName>web-hello-maven</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
配置Tomcat 服务器&运行
- 为maven web 项目配置tomcat
war:先打包成war 包,再把该war 包部署到服务器上
war exploded:直接把文件夹、class 文件等等移到Tomcat 上进行部署。因此这种方式支持热部署,一般在开发的时候都是使用这种模式