使用maven有什么好处呢?
这个问题留到该文的末尾进行总结>v<
maven测试
在上一篇文章中介绍了如何简单的编译一个java文件,执行mvn compile命令后,你会发现在你新建的maven-ch01项目目录下多了一个target文件,该文件下classes文件夹下便是编译后的class文件;
接下来在main文件应该包含两个文件夹,分别为src和test,不可变动;
src文件夹下是放项目的主要文件,可以在新建一个java文件夹用来存储java代码;test文件夹下则放一些测试类,也应该新建一个java文件夹,在下面放java测试类;
1:在test/java文件夹下新建一个com.simfg.maven的包,然后在该包下新建一个TestHelloMaven.java,其内容如下
package com.simfg.maven;
import org.junit.*;
import static org.junit.Assert.*; public class TestHelloMaven{
@Test
public void testSayHello(){
HelloMaven hm = new HelloMaven();
String str = hm.sayHello("maven");
assertEquals(str,"hello,maven");
}
}
2:然后在命令行输入命令:mvn test
你会发现它报错了,找不到junit相关类
3:这时候你可能会将它相关的文件添加到环境变量的classPath路径下,但是如果使用maven的话则不需要这样做,只需要修改pom.xml文件即可,如下
<?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.simfg.maven</groupId>
<!-- 项目中的某个模块 -->
<artifactId>maven-01</artifactId>
<!-- 版本号 -->
<version>1.0</version> <properties>
<project.build.sourceEncoding> UTF-8 </project.build.sourceEncoding>
</properties> <!-- 新添 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies> </project>
4:这时候在在命令行输入:mvn test,会提示编译成功并测试中没有错误
5:观察该项根目录下的target文件夹中的文件,你会发现多了几个文件,其中test-classes文件夹下是测试类编译后的class文件,surefire-reports文件夹下则是测试报告,下面有两个文件,分别是com.simfg.maven.TestHelloMaven.txt(测试报告)和TEST-com.simfg.maven.TestHelloMaven.xml(测试的一些参数),文件名会由测试类的文件名和所在包下变化
运行成功的测试报告是这样的
6:是一个错误的测试吧,首先修改TestHelloMaven.java,将
assertEquals(str,"hello,maven"); -->assertEquals(str,"hello,maven1");
在命令行中运行:mvn clean 作用:清除缓存
然后在运行:mvn test
运行结果肯定是有错的,截图如下
打开测试报告,如下图
根据报告可以知道预期是‘hello,maven’,但是代码中是‘hello,maven1’
到这里你肯定已经知道如何进行测试了
引入不同项目中的文件
1:创建一个新的项目,命名为maven-ch02,其结构和maven-ch01差不多,只不过java文件有所有修改,需要根据java文件建立相应的包哦,文件名为Hello.java,内容为
package com.simfg.maven.ch02; import com.simfg.maven.HelloMaven; public class Hello { public String say(String name){
HelloMaven hm = new HelloMaven();
return hm.sayHello(name);
} }
2:这时候在切换到项目根路径,然后命令行运行:mvn compile 这时候就会报错,找不到HelloMaven这个类
3:先切换到maven-ch01这个项目的根路径(路径回退,输入: cd ..),然后在命令行运行:mvn install,这时候就会将这个项目进行发布
4:在切换会maven-ch02这个项目,在修改pom.xml,主要是建立依赖,内容如下
<?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.simfg.maven</groupId>
<!-- 项目中的某个模块 -->
<artifactId>maven-02</artifactId>
<!-- 版本号 -->
<version>2.0</version> <properties>
<project.build.sourceEncoding> UTF-8 </project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency> <!-- 新添 -->
<dependency>
<groupId>com.simfg.maven</groupId>
<artifactId>maven-01</artifactId>
<version>1.0</version>
</dependency>
</dependencies> </project>
5:你肯定发现了新添的代码和maven-ch01项目中的pom.xml有些许类似地方,其实依赖就是依靠groupId、artifactId、version来定位的,在执行命令:mvn compile,你就可以发现编译顺利完成
打包项目
在命令行输入:mvn package
这时候你会发现target目录下会有一个jar包,这个就是项目打包的结果
总结
基本的maven命令:
1:mvn compile 编译
2:mvn test 测试
3:mvn clean 清空
4:mvn package 打包
5:mvn install 发布项目到本地,会经过和编译
使用maven的好处:
1:无需自己导入jar包,只需要在pom.xml中简单的配置
2:便于分模块开发
3:项目转移给他人无需配置
4:...
如果你还发现有什么好处欢迎留言-V-