第三篇:Maven测试项目及仓库配置(3/10)
2. 初识Maven
2.2 Maven的第一个项目(Hello)
a. 创建下列目录结构的文件夹(xxx为项目名称)
1.约定的Maven项目目录为:
--xxx
--src
--main
--java //存放项目的.java文件
--resources //存放项目资源文件,如spring, mybatis配置文件
--test
--java //存放所有测试.java文件,如JUnit测试类
--resources //测试资源文件
--target //项目的输出位置
--pom.xml //后边会详细介绍(很重要)
如图所示文件结构:
b. 在项目的Hello根目录创建pom.xml,并在里面写
<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.qcby</groupId> <artifactId>Hello</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Hello</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> </dependencies> </project>
c:创建Hello.java文件 (在src/main/java/cn/tx/maven目录下新建文件Hello.java)
package com.qcby; public class Hello { public String sayHello(String name){ return "Hello "+name+"!"; } }
d:创建HelloTest.java文件 (在/src/test/java/cn/tx/maven目录下新建测试文件HelloTest.java)
package com.qcby; import org.junit.Test; import static junit.framework.Assert.*; public class HelloTest { @Test public void testHello(){ Hello hello = new Hello(); String results = hello.sayHello("maven"); assertEquals("Hello maven!",results); } }
小贴士:HelloTest中的assertEquals方法介绍:是Junit的一部分,专门用于检查某个期望值是否等于被测试单元返回的实际值。如果两者一致,程序继续往下运行;如果两者不一致,则会中断测试方法,并抛出AssertionError异常,输出错误信息。
e:进行maven的项目操作,检查相关变化
- 打开cmd命令行,进入Hello项目根目录执行 mvn compile命令,查看根目录变化
- cmd 中继续录入mvn clean命令,然后再次查看根目录变化
- cmd 中录入 mvn clean compile命令, 查看根目录变化
- cmd 中录入 mvn clean test命令,查看根目录变化
- cmd 中录入 mvn clean package命令,查看根目录变化
- cmd 中录入 mvn clean install 查看仓库会把项目安装到仓库里
2.3 Maven的第二个项目(HelloFriend)
a. 创建下列目录结构的文件夹(xxx为项目名称)
详情和上边建立Hello一样,就是项目名称变成HelloFriend
b. 在项目的HelloFriend根目录创建pom.xml,并在里面写(先了解在maven项目的pom.xml中引入依赖即可,后边会详细讲pom.xml)
小贴士:Maven依赖的搜素顺序(后边也会详细讲):本地仓库------》远程仓库(中央仓库(境外的),阿里云(国内 弊端:热点数据下载不下来),腾讯云,华为云)
<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.qcby.maven</groupId> <artifactId>HelloFriend</artifactId> <version>0.0.1-SNAPSHOT</version> <name>HelloFriend</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> <dependency> <groupId>com.qcby</groupId> <artifactId>Hello</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies> </project>
c:创建HelloFriend.java文件(创建位置同Hello.java)
package com.qcby; import com.qcby.Hello; public class HelloFriend { public String sayHelloToFriend(String name){ Hello hello = new Hello(); String str = hello.sayHello(name)+" I am "+this.getMyName(); System.out.println(str); return str; } public String getMyName(){ return "John"; } }
d:创建HelloFriendTest.java文件(创建位置同HelloTest.java)
e: 测试打包HelloFriendpackage com.qcby; import static junit.framework.Assert.assertEquals; import org.junit.Test; import com.qcby.Hello; public class HelloFriendTest { @Test public void tesHelloFriend(){ HelloFriend helloFriend = new HelloFriend(); String results = helloFriend.sayHelloToFriend("zhangsan"); assertEquals("Hello zhangsan! I am John",results); } }
1.在HelloFriend目录下执行命令mvn package
1)结果会出现报错: Could not find artifact cn.tx.maven:Hello:jar:0.0.1-SNAPSHOT
2)原因是:我们在pom文件中引入了Hello依赖,而Hello是我们自己写的,远程仓库肯定是没有的,也还没有放入本地仓库,所以找不到需要放到本地库中
3)解决办法:
☞:我们需将第一个项目Hello安装到本地仓库,在命令行Hello根目录下执行mvn clean install
☞:对Hello项目进行清理并安装后,对HelloFriend项目再次进行打包(本次执行打包命令mvn package,就会成功啦~~~)
小贴士:提到的本地库和远程仓库的概念后边也会介绍
2.4 Maven仓库的配置
a:Maven仓库概念
☞:什么是Maven仓库呢?
1:用来统一存储所有Maven共享构建的位置就是仓库
☞:仓库的分类
1:本地仓库
2:远程仓库
b:Maven本地仓库配置
☞:全局本地仓库(所有操作系统用户均影响)
%MAVEN_HOME%\conf\settings.xml文件,修改该文件会影响所有使用该Maven的用户的本地仓库,例如:
☞:用户本地仓库(仅影响使用该配置文件的用户或程序)
该文件可以在任意目录,例如:
c:修改配置文件设置Maven本地仓库(以全局设置为例)
☞:编辑X:\XXX\XXX\apache-maven-3.5.4\conf\settings.xml文件
找到如下位置:
☞:修改为:
☞:最后保存退出即可
以上配置表示所有使用该Maven的程序或用户,如未单独配置,则默认加载以上目录的本地库文件;
2.5 IDEA整合Maven项目
a: IDEA的MAVEN的全局配置
启动IDEA后找到Settings
注:以上设置完成表示在本idea上所有项目,如未对Maven的配置进行单独配置,则默认均使用该Maven版本和本地库设置;
b:IDEA创建Maven项目
此刻Maven的java项目创建完成
测试Maven的jar包引入
(1)
(2)
(3)
以上,在IDEA上使用Maven进行Java项目的创建及测试已完成!
c:IDEA创建Maven的Java web项目
(1)
(2)
如果创建项目速度非常慢,并且在Generating project in Batch mode卡住,则进行全局设置如下:
-DarchetypeCatalog=local
以上web项目则创建成功,接下来需要进行一些配置来确定web项目可以正常运行
(1)
(2)
添加war包的方法:
配置web服务器
添加本地tomcat配置
(1)
(2)
(3)
(4)
测试项目运行
至此,在IDEA上使用Maven配置的Java web工程已经完成配置
d:Maven项目视图
Maven项目视图主要用于查看该maven项目的各项属性,同时也可以进行一些常见的maven的操作,比如打包,清理,测试等等;