Maven学习之入门二

1. 前言

       上一篇Maven学习之入门一简单介绍了Maven的安装和Myeclipse的配置。现在结合实例来讲述如何使用Maven以及Maven项目的细节知识。

2. 创建Maven项目

2.1 利用myeclipse创建maven项目

以创建一个webapp项目为例:

1. new->other->选择maven项目。


2.选择项目存放地址:


3. 选择“maven-archetype-webapp”创建一个webapp目录结构的项目


4.填写Group Id,Artifact Id,和Package并finish完成项目构建

5. 构建好的maven项目如下:


        maven项目采用“约定优于配置”的原则,src/main/java用于存放源代码,src/main/test用于存放单元测试代码,src/target用于存放编译、打包后的输出文件。这是maven项目的通用约定。如果构建的maven项目目录中不存在src/main/java和src/main/test目录,可以手动添加。

         src\main\resources文件夹是用来存放资源文件的,maven工程目录中如果没有resources文件夹,而且项目需要配置XXX.properties这样的配置文件,那么就要在src\main文件夹下手动新建resources文件夹,并将XXX.properties文件放入其中。test需要用到资源文件,类似放到src\test下。

2.2 在myeclipse导入maven项目

   如果存在一个maven项目,我们需要将其导入myeclipse中,过程如下:
  1. 右键->导入:选择existing maven projects.
   

  2.导入存放的maven项目,然后点击finish

3. maven的使用

3.1 编写pom文件

        pom文件是maven项目的核心,定义了项目的基本信息、maven build项目所需的配置信息以及依赖的管理。

project元素是pom.xml文件的根元素。modelVersion指定了POM模型的版本,Maven2和Maven3的modelVersion值都是4.0.0。
      这段内容中最重要的是groupId,artifactId,version。这三个元素定义了一个项目的基本坐标。groupId定义了项目属于哪个组,这个组和项目所属公司和组织有关,比如公司名为mycompany,项目名为myproject,则groupId可以为com.mycompany.myproject。artifactId定义了当前的Maven项目在myproject项目中的唯一ID标识。项目里java类的package的一般定义为:com.mycompany.myproject.artifactId,一般与POM定义的groupId和artifactId保持一致,这要是为了方便maven搜索构件和java类,逻辑也很清晰。version则定义了当前项目的版本号,0.0.1-SNAPSHOT表明该项目处于开发阶段,不太稳定,随着项目的推进,版本也会更新。
      name元素则声明了一个比较友好的项目名称,不是必须设置的。url元素声明了maven项目官网地址。

3.2 常用maven命令的介绍

3.2.1 mvn命令常用参数

mvn -e   显示详细错误
mvn -U   强制更新snapshot类型的插件或依赖库(否则maven一天只会更新一次snapshot依赖)
mvn -o    运行offline模式,不联网更新依赖
mvn -N   仅在当前项目模块执行命令,关闭reactor
mvn -pl   module_name在指定模块上执行命令
mvn -ff    在递归执行命令过程中,一旦发生错误就直接退出
mvn -Dxxx=yyy  指定java全局属性
mvn -Pxxx  引用profile xxx

3.2.2 Build Lifecycle用的命令

mvn test-compile 编译测试代码
mvn test 运行程序中的单元测试
mvn clean 用于清理输出目录target/
mvn  compile 编译项目
mvn package 打包,此时target目录下会出现maven-quickstart-1.0-SNAPSHOT.jar文件,即为打包后文件
mvn install 打包并安装到本地仓库,此时本机仓库会新增maven-quickstart-1.0-SNAPSHOT.jar文件。
mvn deploy将最终的包复制到远程仓库
     执行以上命令时,clean是不会自动执行的,因为clean和其他5个命令是不同的生命周期,因此需要使用组合命令,如mvn clean install。

3.3 案例说明

3.3.1 编写主代码和测试代码

项目的主代码和测试代码不同,项目的主代码会被打包最后的jar/war包中,而测试代码不会。
案例环境:spring4, maven3, jdk8。
主代码:
package com.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class HomeController {
   
	@RequestMapping(value={"/","/index"}, method = RequestMethod.GET)
	public String getHomePage(){
		return "index";
	}
}
测试代码:典型的单元测试有三个步骤:1. 准备要测试的类和数据。2. 执行测试的行为。 3.检查测试结果。本实例测试控制器是否返回期望的String值。值得注意的是需要执行的测试方法名约定以test开头。
package com.example.controller;

import junit.framework.Assert;

import org.junit.Test;

public class HomeControllerTest {
    
	@Test
	public void testHomeController(){
		// 创建控制器的一个实例
		HomeController hc = new HomeController();
		// 判断返回值
		String str = hc.getHomePage();
		Assert.assertEquals("index", str);
	}
}
pom文件中依赖编写:包括junit,spring。
<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.7</version>
      <scope>test</scope>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-core</artifactId>
    	<version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-beans</artifactId>
    	<version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-web</artifactId>
    	<version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-webmvc</artifactId>
    	<version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-context</artifactId>
    	<version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-context-support</artifactId>
    	<version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-test</artifactId>
    	<version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
    	<groupId>javax.servlet</groupId>
    	<artifactId>javax.servlet-api</artifactId>
    	<version>4.0.0-b05</version>
    </dependency>
  </dependencies>

3.3.2 maven命令的执行

1. mvn clean: 通过查看信息可知,清楚了target目录的内容。

2. mvn test:如果出现错误,信息会说明错误的原因。










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值