三.第一个Maven工程
1.定义一个约定的目录结构
|---hello------------------------------------------项目根目录
|-----|------src-----------------------------------源码目录
|-----|-------|--------main------------------------主程序目录
|-----|-------|----------|------java---------------主程序的源码目录
|-----|-------|----------|------resources----------主程序配置文件目录
|-----|-------|--------test------------------------测试程序目录
|-----|-------|----------|------java---------------测试程序的源码目录
|-----|-------|----------|------resources----------测试程序的配置文件目录
|-----|------pom.xml-------------------------------Maven核心配置文件
2.HelloMaven
package com.itany.maven;
public class HelloMaven{
public String sayHello(){
return "Hello Maven";
}
}
3.TestHello
package com.itany.maven;
import org.junit.Test;
import static org.junit.Assert.*;
public class TestHello{
@Test
public void test(){
HelloMaven hm = new HelloMaven();
String result = hm.sayHello();
assertEquals("Hello Maven",result);
}
}
4.pom.xml
POM–Project Object Model
项目对象模型
POM是整个Maven的核心
与Maven相关的一切都在pom.xml中
有了它你就有了一切
与Maven构建相关的配置都在pom中进行
<?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>com.itany.maven</groupId>
<artifactId>hello</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
5.坐标
坐标是一个Maven工程的核心配置项
每一个Maven工程都必须存在坐标的配置
通过一个坐标可以指定某一个具体的Maven项目
Maven提供了三个坐标向量
- groupId
- 组织机构,可以随便写
- 一般要求使用当前的包名,即域名.[企业名].[产品名].项目名
- artifactId
- 模块名称,可以随便写
- 一般要求使用项目名
- version
- 版本号
6.常用命令
通过Maven命令执行对应的工程
Maven命令与构建的环节是有对应关系的
在使用Maven命令的时候,必须进入到Maven工程pom.xml文件所在的位置去执行
-
mvn clean
- 执行清理操作
- 清除原有的编译结果
-
mvn compile
- 编译主程序代码
- 生成一个classes目录
- 用于存放主程序编译后的字节码文件
-
mvn test-compile
- 编译测试程序代码
- 生成一个test-classes目录
- 用于存放测试程序编译后的字节码文件
-
mvn test
- 执行测试
- 生成
surefire-reports
目录,用于存放测试报告
-
mvn package
- 打包
- 生成对应的jar包或者war包
-
mvn install
- 安装
- 将对应的maven工程安装到本地仓库
- 如果没有配置本地仓库,会存放到默认的地址中
- windows:
C:\Users\User\.m2\repository
- linux:
/home/soft/.m2
- windows:
-
mvn site
- 生成站点
- 生成site目录,该目录中存放文档信息
- 该命令直接使用可能会报错,使用时需要配置对应的插件
- 在对应的Maven工程的pom.xml中进行配置
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> <version>2.7</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>3.3</version> <configuration> <locales>zh_CN</locales> </configuration> </plugin> </plugins> </build>
7.生命周期
在Maven中存在三套完全独立的生命周期
- clean
- 在真正构建之前使用
- 做清理操作
- 只有一个clean命令
- default
- 构建的核心部分
- compile、test-compile、test、package、install
- 这套生命周期是存在先后顺序的
- 必须先执行前面的才能执行后面的
- 如果直接执行后面的命令,默认会自动在执行前将该命令之前的所有环节自动执行
- site
- 在构建完成之后使用,生成对应的站点
- 主要用于生成对应的API文档信息
- 可以单独使用,与其他命令没有先后顺序