1.Maven工程的结构
我们需要通过Maven进行自动化构建, 以编译为例, Maven要想自动进行编译, 那么它必须知道Java源文件保存在哪里,所以要遵守Maven的约定,也就是约定大于配置,配置大于编码,无论我们使用什么框架,如果我们自己定义的东西想要让框架知道,都需要遵守框架的约定。
1) Maven项目结构:
2) Maven项目各个部分的作用:
[1]根目录: 工程名
[2]src目录: 源码
[3]pom.xml文件 : Maven工程的核心配置文件
[4]main目录: 存放主程序
[5]test目录: 存放测试程序
[6]java目录: 存放Java源文件
[7]resources目录: 存放框架或其他工具的配置文件
2.创建第一个Maven项目
我们安装上面介绍的标准maven项目结构,创建一个maven项目。
pom.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http:///POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http:///POM/4.0.0 http:///xsd/maven-4.0.0.xsd">
5 <modelVersion>4.0.0</modelVersion>
6
7 <groupId>com.wzy</groupId>
8 <artifactId>Hello</artifactId>
9 <packaging>jar</packaging>
10 <version>1.0-SNAPSHOT</version>
11
12
13 </project>
在main目录下面的java文件夹下创建一个Hello.java
1 public class Hello{
2 public static void main(String []args){
3 System.out.println("Hello world");
4 }
5 public static String getHello() {
6 return "getHello";
7 }
8 }
在test目录下的java文件夹下创建一个TestHello.java
1 public class TestHello{
2 public static void main(String []args){
3 System.out.println("Test Hello");
4 }
5 }
3.Maven的常用命令
经过上面的准备工作之后,我们就可以运行一些Maven命令,首先来看一下,常见的Maven命令有哪些:
[1]mvn clean: 清理
[2]mvn compile: 编译主程序
[3]mvn test-compile: 编译测试程序
[4]mvn test: 执行测试
[5]mvn package: 打包
[6]mvn install : 安装
[7]mvn site : 生成站点
需要注意的是,上述的这些命令,必须在pom.xml所在的目录执行
a)mvn compile命令:
在执行完mvn compile命令之后,我们可以看到在src同级目录生成了一个target文件夹,里面就保存编译之后.class文件,这里注意这个命令编译的是主程序test下的java代码并不会进行编译。
b)mvn test-compile
在执行完mvn test-compile命令之后,我们可以看到在src同级目录生成了一个target文件夹,里面就保存编译之后.class文件,这里要注意的是,这个命令于mvn compile不同,他会同时编译主程序和测试程序。
c)mvn clean命令:
执行完mvn clean命令之后,我们就会发现之前生成的target文件夹不见了,也就是说clean命令的作用是将我们编译的目标文件进行清除。
d)mvn test
执行mvn test命令maven会将 test目录下的junit单元测试类进行执行,并且会统计出测试报告。
e)mvn package
通过mvn package这个命令,我们可以对程序进行打包,打包的方式根据我们在pom.xml中设置的方式,这里可添加jar或者war。
打包成功之后就会在target文件夹生成一个jar包:
f)mvn install
mvn install这个命令是Maven特有的,它的作用是将我们项目打包的jar安装到本地仓库中,我们可以通过坐标进行引用(GAV后面会进行介绍),根据上图可以看到已经成功的将jar包安装到本地仓库。
下面我们以同样的方式建立一个名为Person的Maven项目,我们希望引入已经安装到本地仓库的Hello项目的jar包并调用其中getHello方法。在Person的src/main/java下创建Person.java,并编写如下代码:
1 public class Person{
2 public static void main(String []args) {
3 System.out.println(Hello.getHello());
4 }
5 }
之后在Person项目的pom.xml引入Hello项目的依赖:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http:///POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http:///POM/4.0.0 http:///xsd/maven-4.0.0.xsd">
5 <modelVersion>4.0.0</modelVersion>
6
7 <groupId>com.wzy</groupId>
8 <artifactId>Person</artifactId>
9 <packaging>jar</packaging>
10 <version>1.0-SNAPSHOT</version>
11 <dependencies>
12 <dependency>
13 <groupId>com.wzy</groupId>
14 <artifactId>Hello</artifactId>
15 <version>1.0-SNAPSHOT</version>
16 </dependency>
17 </dependencies>
18
19 </project>
之后在Person项目的pom.xml路径下运行mvn compile命令,对Person项目中的代码进行编译。
我们可以看到编译成功,说明我们成功从Maven本地仓库中引入了Hello项目的jar包。
g)mvn site
生成项目相关信息的网站,在项目中并不常用,生成时间比较长,这里不做介绍