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://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命令:
在执行完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://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本地仓库中引入了Hello项目的jar包。
g)mvn site
生成项目相关信息的网站,在项目中并不常用,生成时间比较长,这里不做介绍