Bootstrap

了解项目管理工具(Maven)

第三篇: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的项目操作,检查相关变化

  1. 打开cmd命令行,进入Hello项目根目录执行 mvn compile命令,查看根目录变化
  2. cmd 中继续录入mvn clean命令,然后再次查看根目录变化
  3. cmd 中录入 mvn clean compile命令, 查看根目录变化
  4. cmd 中录入 mvn clean test命令,查看根目录变化
  5. cmd 中录入 mvn clean package命令,查看根目录变化
  6. 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)

package 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);		

	}
}
e: 测试打包HelloFriend 
   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的操作,比如打包,清理,测试等等;

;