Maven项目构建利器03——第一个Maven工程

时间:2021-12-06 16:12:51

1.Maven工程的结构

我们需要通过Maven进行自动化构建, 以编译为例, Maven要想自动进行编译, 那么它必须知道Java源文件保存在哪里,所以要遵守Maven的约定,也就是约定大于配置,配置大于编码,无论我们使用什么框架,如果我们自己定义的东西想要让框架知道,都需要遵守框架的约定。

1) Maven项目结构:

Maven项目构建利器03——第一个Maven工程

 

2) Maven项目各个部分的作用:

[1]根目录: 工程名

[2]src目录: 源码

[3]pom.xml文件 : Maven工程的核心配置文件

[4]main目录: 存放主程序

[5]test目录: 存放测试程序

[6]java目录: 存放Java源文件

[7]resources目录: 存放框架或其他工具的配置文件

 

2.创建第一个Maven项目

我们安装上面介绍的标准maven项目结构,创建一个maven项目。

Maven项目构建利器03——第一个Maven工程

pom.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/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命令

Maven项目构建利器03——第一个Maven工程

在执行完mvn compile命令之后,我们可以看到在src同级目录生成了一个target文件夹,里面就保存编译之后.class文件,这里注意这个命令编译的是主程序test下的java代码并不会进行编译。

Maven项目构建利器03——第一个Maven工程

Maven项目构建利器03——第一个Maven工程

b)mvn test-compile

Maven项目构建利器03——第一个Maven工程

 在执行完mvn test-compile命令之后,我们可以看到在src同级目录生成了一个target文件夹,里面就保存编译之后.class文件,这里要注意的是,这个命令于mvn compile不同,他会同时编译主程序和测试程序。

Maven项目构建利器03——第一个Maven工程

c)mvn clean命令:

 Maven项目构建利器03——第一个Maven工程

执行完mvn clean命令之后,我们就会发现之前生成的target文件夹不见了,也就是说clean命令的作用是将我们编译的目标文件进行清除。

d)mvn test

Maven项目构建利器03——第一个Maven工程

执行mvn test命令maven会将 test目录下的junit单元测试类进行执行,并且会统计出测试报告。

e)mvn package

Maven项目构建利器03——第一个Maven工程

通过mvn package这个命令,我们可以对程序进行打包,打包的方式根据我们在pom.xml中设置的方式,这里可添加jar或者war。

Maven项目构建利器03——第一个Maven工程

打包成功之后就会在target文件夹生成一个jar包:

Maven项目构建利器03——第一个Maven工程

f)mvn install 

Maven项目构建利器03——第一个Maven工程

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://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/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项目构建利器03——第一个Maven工程

我们可以看到编译成功,说明我们成功从Maven本地仓库中引入了Hello项目的jar包。

g)mvn site

 生成项目相关信息的网站,在项目中并不常用,生成时间比较长,这里不做介绍