使用 Maven 的客观原因
- 手工管理模块之间的关系比较繁琐
- 项目中有很多第三方功能,依赖关系复杂,需要管理 jar 包及其版本
- Maven 可以自动下载jar和其他文档
a.jar 需要 b.jar 这样的关系叫做依赖
java压缩文件扩展名一般是 .jar ,而对于web应用,压缩扩展名为 .war
项目构建
Maven 核心概念
约定的目录结构
修改本地仓库地址
生成的class文件都在 项目/target 文件夹中
第一次使用Maven,会下载插件,下载完后的地址在C盘中
- 找到 安装目录/conf/settings.xml,备份settings.xml文件
- 修改<localRository> 标签内容,在标签注释下加入一行<localRepository>路径</localRepository>
仓库
仓库分类
本地仓库
远程仓库
---中央仓库
---中央仓库镜像,就是中央仓库的备份
---私服(私人服务器),一般局域网中使用
仓库的使用
- 不需要人为参与
- 先找本地仓库,然后是私服、镜像、中央仓库
pom
modelVersion | Maven的版本,对于Maven2和Maven3都是4.0.0 |
groupId | 组织Id,一般是公司域名倒 写 |
artifactId | 项目名称 |
version | 项目版本号 |
packaging | 打包后文件的扩展名,默认是jar |
groupId,artifactId,version 三个连在一起使用就是一个互联网上唯一的坐标
dependencies 和 dependence
<dependencies>
<dependence>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</dependence>
</dependencies>
properties 设置属性
build | 设置信息和配置插件, 如jdk版本 |
plugins | 配置插件 |
plugin | 配置具体插件 |
<build>
<plugins>
<plugin>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
配置插件信息
<configuration>
编译在1.8的JDK上
<source>1.8</source>
运行在1.8的JDK上
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
Maven 的生命周期就是,项目构建的过程
Maven 的命令真正完成功能的是Maven的插件
Junit
- 专门测试的框架(工具)
- 测试内容是类中的各个方法,方法是测试的基本单位(因此也叫做单元测试)
使用步骤
- 加入依赖
- 在test/java 下,创建测试程序
- 测试类的名字 Test+被测试类名
- 测试方法名字 Test+被测试方法名
测试方法
1. 方法修饰为public
2. 方法没有返回值
3. 方法前要加入@Test
Assert.assertEquals(期望值,实际值);
不等就抛异常
Maven命令
mvn compile 编译main 下所有java文件
mvn test-compile 编译test 下所有java文件
mvn clean 清理之前的编译工作留下的文件
mvn test 编译并测试代码,会生成一个surefire-reports目录,保留测试结果
mvn package 打包(不包括测试文件)
mvn install 安装程序,保存到本地仓库中
IDEA中的Maven
- 一般不使用IDEA内置的,使用我们自带的
创建普通工程
选择org.apache.maven.archetypes:maven-archetype-quickstart
创建web工程
选择org.apache.maven.archetypes:maven-archetype-webapp
<!--加入Servlet依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
</dependency>
依赖范围
使用<scope>标签来表示
compile | 默认模式,在所有阶段都会用到 |
test | 在测试阶段才起作用 |
provided | 需要用到时才提供,即主程序和测试阶段 |
全局变量
在<properties>中声明,在xml文件其他位置中通过${}调用
<properties>
<bianliang>1.0.0</bianliang>
</properties>
${bianliang}
资源插件
在编译代码时,默认会将main/resources的的文件复制到target目录下
对于main/java 目录下的文件,需要在编译时将其拷贝到target/classes 目录中,此时就需要<resources>
<build>
<resources>
<resource>
<!--被处理目录-->
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include><!--所有xml文件-->
</includes>
<filtering>false</filtering><!--不使用过滤器-->
</resource>
</resources>
</build>
向本地仓库添加jar包
maven安装jar包的命令是:
mvn install:install-file -Dfile=jar包的位置(需要修改) -DgroupId=设置groupId(需要修改) -DartifactId=设置artifactId(需要修改) -Dversion=设置version(需要修改) -Dpackaging=jar(不需要修改)