一、Maven的简介
1.1 定义
Maven 是 Apache 下的一个开源项目,是纯 Java 开发,并且只是用来管理 Java 项目的。
1.2 优点
- 对于同一个 JavaWeb 项目,用 Maven 管理的要比不用的小很多,对 jar 包做了统一管理,依赖管理
- 一键构建
- 可跨平台
- 应用在大型项目可提高开发效率
1.3 依赖管理
对 jar 包的统一管理,项目需要哪个就引用仓库的哪个,这样可以节省空间。
1.4 项目一键构建
Maven能干的事:
编译、测试(junit)、运行、打包、部署。
二、Maven的安装配置
2.1 Maven工具的目录结构
2.2 环境变量配置
2.3 Maven仓库
- 本地仓库(自己维护)
本地仓库的配置只需要修改 Maven 核心文件settings.xml
文件就可以。
- 远程仓库(私服,公司维护)
- 中央仓库(Maven团队维护,共有 jar 包约两个亿)
三个仓库的关系:
三、命令行中使用Maven工具
-
mvn clean:清理编译的文件(target)
-
mvn compile:编译主目录的文件
-
mvn test:编译并运行 test 目录的代码
-
mvn package:打包( jar 包(给别人用),war 包(Web工程,放到 tomcat 里直接运行))
-
mvn install:就是把项目(打包后的 war 包)发布到本地仓库
-
mvn tomcat:run:运行(包括编译)
四、Maven项目构建
4.1 Maven项目的目录结构
4.2 Maven在eclipse中的配置
4.2.1 选择Maven软件
4.2.2 修改默认的本地仓库地址
4.3 新建项目
4.3.1 新建maven项目
4.3.2 跳过骨架
如果不跳过骨架选择创建出的项目目录是不全的。
4.3.3 填写坐标
4.3.4 工程创建完成
4.3.5 处理红色叉号
手动在webapp文件夹下创建一个 WEB-INF 文件夹,在里面放一个 web.xml 文件。
Maven 支持 war 的打包方式,但是不支持 Web 工程。
也可一键生成(右键项目):
4.3.6 处理编译版本
需要添加 JDK 编译插件。
搜索。
该 <plugin>
被添加,但是其中的 <cofiguration>
需要自己写。<cofiguration>
不设置则默认。
此时工程会报错,需要更新。
4.4 完成项目
4.4.1 webapp 中添加 index.jsp
4.4.2 添加需要的 jar 包、插件
<build>
<plugins>
<!-- JDK编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source> <!-- 源码版本 -->
<target>1.7</target> <!-- 编译后版本 -->
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<!--
<configuration>
<port>8080</port>
<path>/</path>
<charset>UTF-8</charset>
</configuration>
-->
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
注意:
maven-war 工程导入 jsp-api.jar 后运行时出错。原因:部署到 tomcat 后,tomcat 中自带的 jsp-api.jar 和工程中添加的 tomcat 插件冲突。
解决方案:需要将添加的 jar 包设置为运行时不可用(设置依赖范围):<scope>provided</scope>
。
依赖范围:
- Compile(如 commons-lang.jar)
编译(compile)时需要 测试时需要,运行时需要,打包时需要 - Provided(如 jsp-api.jar,servlet-api.jar)
编译(compile)时需要,测试(test)时也需要 ,运行时不需要,打包时不需要 - Runtime(如数据库驱动包)
编译时不需要,测试时需要,运行时需要,打包时需要 - Test(如 junit.jar)
编译时不需要,测试时需要,运行时不需要,打包也不需要
4.4.3 运行
注:tomcat:run 默认使用 tomcat6,如用 tomcat7 则需写 tomcat7:run。
运行结果如下:
五、junit单元测试
5.1 由来
没有 main 方法,怎么调试?
单元测试,以方法为单元进行调试,企业中就是这样来进行调试的。
5.2 步骤
- 导入相关 jar 包
- 给方法添加注解
@Test
package test;
import org.junit.Test;
public class Demo01 {
@Test
public void test1() {
System.out.println("test1");
}
@Test
public void test2() {
System.out.println("test2");
}
@Test
public void test3() {
System.out.println("test3");
}
}
- 右键方法名 → Run as → JUnit Test
- 方法测试