Maven学习笔记-02-Maven项目打包配置与测试
一 Maven项目打包配置
1 为整个项目统一指定字符集
<properties>
<project.build.sourceEncoding>UTF-</project.build.sourceEncoding> <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
project.build.sourceEncoding: 用来定义资源文件的编码格式
maven.compiler.encoding : 编译源码时使用的编码格式
2引入外部jar
1)把引入的外部jar放入指定的位置。比如路径D:/workpace_myeclipse/WeiXinWeb1/lib下
<properties>
<project.build.sourceEncoding>UTF-</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-</maven.compiler.encoding>
<compiler.path>D:/workpace_myeclipse/WeiXinWeb1/lib</compiler.path>
</properties>
2)配置pom.xml的编译插件,指定需要编译的外部jar路径
<pluginManagement>
<plugins>
<!-- compiler插件, 设定JDK版本 参考网页:http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html
http://www.cnblogs.com/fantiantian/p/3645715.html -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version></version>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-javac</artifactId>
<version></version>
</dependency>
</dependencies>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-</encoding>
<compilerArguments>
<extdirs>${compiler.path}</extdirs>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
3 打包的war名称设置
<build>
<!-- 打包的war名称设置 -->
<finalName>xpxiaowu4java</finalName>
</build>
综合例子
<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></modelVersion>
<groupId>com.xinping</groupId>
<artifactId>TestWeb</artifactId>
<version>-SNAPSHOT</version>
<packaging>war</packaging>
<!-- 为整个项目统一指定字符集 -->
<properties>
<project.build.sourceEncoding>UTF-</project.build.sourceEncoding>
</properties>
<build>
<!-- 打包的war名称设置 -->
<finalName>TestWeb</finalName>
</build>
</project>
4 引入本地jar包
方法一
加入当前工程需要引入本地的smgpGroup1-1.0.jar,那么在当前工程目录下新建文件夹lib,把smgpGroup1-1.0.jar放进入。然后在pom.xml中添加如下代码:
<dependency>
<groupId>smgpGroup1</groupId>
<artifactId>smgpGroup1</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/smgpGroup1-1.0.jar</systemPath>
</dependency>
注意:
使用system scope, SystemPath.
方法二:
直接在控制台输入以下命令,来加载本地jar包,格式如下:
mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的artifactId -Dversion=上面的version -Dpackaging=jar
比如:加载本地文件 smgpGroup1-1.0.jar
mvn install:install-file -Dfile=D:/taobaojar/sms/smgpGroup1-1.0.jar -DgroupId=smgpGroup1 -DartifactId=smgpGroup1 -Dversion=1.0 -Dpackaging=jar
二 Maven项目测试
1 编写业务类
在maven工程的 src/main/java 下编写算术业务逻辑,实现基本的加,减,乘和除功能。
import java.util.Random;
public class Math {
public int add(int p1, int p2) {
int result = p1 + p2 ;
long startTime = System.currentTimeMillis();
lazy();
long endTime = System.currentTimeMillis();
long consumeTime = endTime - startTime ;
System.out.println(p1+"+" + p2 + "=" + result);
System.out.println("消耗时间 "+ consumeTime + " 毫秒");
return result;
}
public int sub(int p1, int p2) {
int result = p1 - p2 ;
long startTime = System.currentTimeMillis();
lazy();
long endTime = System.currentTimeMillis();
long consumeTime = endTime - startTime ;
System.out.println(p1+"-" + p2 + "=" + result);
System.out.println("消耗时间 "+ consumeTime + " 毫秒");
return result;
}
public int mul(int p1, int p2) {
int result = p1 * p2 ;
long startTime = System.currentTimeMillis();
lazy();
long endTime = System.currentTimeMillis();
long consumeTime = endTime - startTime ;
System.out.println(p1+"*" + p2 + "=" + result);
System.out.println("消耗时间 "+ consumeTime + " 毫秒");
return result;
}
public int div(int p1, int p2) {
int result = p1 / p2 ;
long startTime = System.currentTimeMillis();
lazy();
long endTime = System.currentTimeMillis();
long consumeTime = endTime - startTime ;
System.out.println(p1+"/" + p2 + "=" + result);
System.out.println("消耗时间 "+ consumeTime + " 毫秒");
return result;
}
public void lazy() {
Random random = new Random();
);
try {
Thread.sleep(lazyMils);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
2 编写测试用例
在src/test/java下编写单元测试,可以编写一个或多个测试用例。
public class TestJunit extends TestCase {
protected void setUp() throws Exception { super.setUp(); }
protected void tearDown() throws Exception { super.tearDown(); } public void testRunMath(){ System.out.println("---- testRun ----"); Math math = new Math(); math.add(3, 7); math.sub(3, 7); math.mul(13, 7); math.div(13, 7); }}
maven运行单元测试, cd到mavn项目目录,运行以下命令,就在maven中执行Junit 的测试用例。
mvn test
执行maven命令后做所有的类和方法的测试并打印测试结果。

如果运行 mvn package 命令,会对项目自动进行编译和打包,也会执行junit的测试用例。如果想跳过自动执行测试用例,需要执行
mvn package -DskipTests=true
3 生成测试报告
如果需要对整个项目的单元测试做一个统计,并生成测试报告,给管理人员提供项目质量的一个监控服务的。可以选择covertura插件,插件cobertura-maven-plugin提供单元测试整体覆盖率以及分支覆盖率的工具,给编写单元测试的开发者提供一个参考,看其中是否存在有重要代码遗漏的情况。
首先在maven项目的pom.xml 文件添加如下配置:
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
</plugins>
</reporting>
在项目目录下运行以下命令即可生成target目录下生成site\cobertura目录,里面存放了所有的单元测试报告,组织形式如javadoc.其中index.html对所有包的覆盖率做了统计。
mvn cobertura:cobertura

点击任意包名,再点击类名,可以看到类中每一行代码是否被覆盖:

如上图所示,左端行号上为绿色的表示应该被覆盖到的代码行,右边无颜色的为已覆盖的代码,红色的为未覆盖的代码,非常直观的提醒了开发者。
需要提醒的是,cobertura只提供了行覆盖率的指标,但是对覆盖的代码质量如何它是无力判断的,不可过度推崇代码覆盖率,还应该和代码走查结合起来看覆盖的测试质量,再做总体判断为宜。
Maven学习笔记-02-Maven项目打包配置与测试的更多相关文章
- MAVEN学习笔记之Maven生命周期和插件简介(3)
MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ...
- MAVEN学习笔记之Maven插件的应用(4)
MAVEN学习笔记之Maven插件的应用(4) <build> <pluginManagement> <plugins> <plugin> <gr ...
- Maven学习笔记:Maven简介
Maven的概念 Maven是基于项目对象模型(POM,Project Object Model),可以通过描述信息来管理项目的构建,报告和文档的软件管理工具 Maven除了以程序构建能力为特色之外, ...
- Maven学习笔记-03-Eclipse下maven项目在Tomcat7和Jetty6中部署调试
现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...
- Maven学习笔记-04-Eclipse下maven项目在Tomcat7和Jetty6中部署调试
现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...
- Maven 学习笔记(二)
前面一文——Maven 学习笔记(一)中已经提到了 pom 的大部分配置,Maven 本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给创建来完成,每一个任务都会对应一个插件 ...
- Maven学习笔记—仓库
Maven仓库 1 什么是Maven仓库 在Maven中,任何一个依赖.插件或者项目构建的输出,都可以成为构件,而Maven通常在某个位置统一的存储所有Maven项目共享的构件,这个统一的位置就是Ma ...
- MAVEN学习笔记之私服Nexus(2)
MAVEN学习笔记之私服Nexus(2) 私有服务器搭建 Nexus www.snatype.org下载 snatype-work 是默认nexus存储nexus a:将bin添加到环境中 Admin ...
- MAVEN学习笔记之基础(1)
MAVEN学习笔记之基础(1) 0.0 maven文件结构 pom.xml src main java package resource test java package resource targ ...
随机推荐
- 关闭log4j 输出 DEBUG org.apache.commons.beanutils.*
2016-03-23 10:52:26,860 DEBUG org.apache.commons.beanutils.MethodUtils - Matching name=getEPort on c ...
- 安装依赖包时--save-dev以及-save的区别及意义
首先这样做会生成一个package.json的配置文件,并在里面增加相应的版本信息,以后运行程序时,安装依赖包可以直接 npm install或者你有安装淘宝镜像,那就cnpm install 就一 ...
- 【有奖】NOIP普及组模拟赛 个人邀请赛 乐多赛
题目描述 日本数学家角谷有一个猜想:任意一个自然数,经过以下过程,最终会得到1.现在请你打印出任意一个数使用角谷猜想转换为1需要几次. 演变方式: 1.如果这个数为奇数,则将它×3+1.如果这个数为偶 ...
- [每日自动更新]Hillstone 山石网科 StoneOS ISP路由表配置文件
1.数据基于APNIC,准确有效 2.适用于StoneOS 4.0~5.5各版本 3.对APNIC数据进行路由聚合,实现最小子网 4.覆盖中国大陆地区电信.联通.移动三大运营商,长宽.电信通等二级运营 ...
- Inode详解-重要
一.inode是什么 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读 ...
- 你都认识下面这些参数么?【Camera】
在调试的时候利用下面这个函数将 Camera AP 部分所设置的参数全部 dump 出来了,真是多啊! 这里仅限于 MTK 平台,MTK 自己在相机这块添加了许多功能,所以看起来就有一大堆的参数. 调 ...
- web页面的回流,认识与避免
一.什么是回流? 回流是会导致页面重新渲染的一些元素,从而影响性能. 二.哪些因素会导致回流? 1.调整窗口的大小: 2.改变字体,如果用rem 设置了根目录的字体大小,这样就减少了回流的次数: 3 ...
- 在opencv3中实现机器学习之:利用逻辑斯谛回归(logistic regression)分类
logistic regression,注意这个单词logistic ,并不是逻辑(logic)的意思,音译过来应该是逻辑斯谛回归,或者直接叫logistic回归,并不是什么逻辑回归.大部分人都叫成逻 ...
- Java系列:关于Java中的桥接方法
这两天在看<Java核心技术 卷1>的泛型相关章节,其中说到了在泛型子类中override父类的泛型方法时,编译器会自动生成一个桥接方法,这块有点看不明白. 书上的例子代码如下: publ ...
- 创建Spring容器
对于使用Spring的web应用,无须手动创建Spring容器,而是通过配置文件,声明式的创建Spring容器.在Web应用中,创建Spring容器有如下两种方式:1.直接在web.xml文件中配置: ...