maven(一)初步搭建,项目结构
一、环境准备
java环境, jdk 1.5 以上
MyEclipse集成工具,我装的是8.5 版本
二、快速安装及配置
1、下载maven: http://maven.apache.org/docs/3.1.1/release-notes.html
下载apache-maven-3.*.*-bin.zip
解压后, 配置环境变量%MAVEN_HOME%\bin 即可完成安装,(MAVEN_HOME为解压包位置)
测试maven3是否已经安装,在dos上运行mvn -version,出现如下类似结果表示安装完成

2、修改仓库位置
2.1 win7系统默认的仓库路径是:C:\Users\用户名\.m2\repository 修改为:D:\Program Files\Maven\Repositories
2.2 修改\apache-maven-3.1.0\conf 下的setting.xml文件, 找到<localRepository>D:\Program Files\Maven\Repositories</localRepository>这一行,进行修改
2.3 打开命令提示符, 输入:mvn help:system, 该命令会打印出所有的java系统属性和环境变量
3、修改myeclipse内嵌maven为自己安装的版本
打开myEclipse,点击Window->Preferences

三、创建maven项目例子
1、新建项目, 点击File->Other 选择Java Maven Project

图1:new Maven Project

图2:ProjectName\ Group Id\Artifact Id
2、新建项目后, maven项目结构如下图

说明:
1)pom.xml在项目的根目录下,打开pom.xml
2)pom.xml中, groupId artifactId和version,这3个元素定义了项目基本的坐标,
一般groupId跟创建的包关联(名称相同),如图所示; artifactId定义了当前Maven项目在组中唯一的ID
3)pom.xml自动添加了依赖<dependency>,有了这个声明, Maven能够自动下载相应版本的junit.jar包,
如图,已经下载到了本地仓库C:\Users\${用户名}\.m2\repository\junit\junit\versionxx,打开该路径,可以看到junit-version.pom 和junit-version.jar
4)<dependency>添加依赖中,元素<scope>定义依赖范围,当为test时候, 表示: import JUnit只能测试类中, 在主代码中引入, 会编译错误。
不声明依赖范围,默认值是compile,表示该依赖对主代码和测试代码都有效。
3、编写主代码(src/main/java下)并编译
比如,在com.jennifer.test下建HelloMaven.java
代码如下:

使用Maven进行编译, 在项目根目录下运行命令: mvn clean compile

说明:
1)clean,告诉Maven清理输出目录 target/
2)compile告诉Maven编译项目主代码,编译后,在..\maventest2\target\classes的 \com\jennifer\test下生成了HelloMaven.class 文件
4、编写测试代码(src/test/java下)
如上2(3)所述, 已经添加了junit依赖,(默认创建项目后依赖的junit版本较低,改成4.8.1,此时,依赖的关联包会自动更新),
下面用junit编写测试类

编写完毕后, 调用Maven执行测试,运行 mvn clean test

说明:
1)执行成功后, 在..\maventest2\target\test-classes的 \com\jennifer\test下生成了HelloMavenTest.class 文件
并且, target下面生成 surefire-reports,显示运行结果报告
2)若构建执行compiler:testCompile任务的时候失败了,Maven输出提示需要使用 -source5或更高版本以启动注释
修改配置文件, 使maven-compiler-plugin支持java5,如下:

5、打包
执行打包命令:mvn clean package

说明:
1)执行打包命令,jar插件的jar目标将项目主代码打包成一个名为hello-0.0.1-SNAPSHOT.jar,该文件位于target/ 输出目录中
默认命令规则:artifact-version.jar
2)将该 .jar文件拷贝下来, 导入到其他项目中, 就可以调用里面的类和提供的方法
3)直接在其他Maven引用的话, 执行安装步骤:mvn clean install, 就会安装到本地仓库中, 同样在repository仓库文件夹里,生成该项目的.pom .jar文件(类似前面下载的junit)

6、运行
前面默认打包生成的jar不能够直接运行, 因为带有main方法的类信息不回添加到mainfest中,需要再配置插件

再重新执行 mvn clean install
回再生成一份新的带有Main-Class信息的.jar文件,前面生成的被重命名为original-hello-0.0.1-SNAPSHOT.jar
在项目根目录中执行该jar文件

四、maven与其他常用插件结合使用
上述中, 就有提到maven里面配置junit插件, 用来完成单元测试, 实际上,maven项目很容易跟其他插件结合起来使用
比如javadoc, 代码覆盖测量工具Cobertura等
1、javadoc配置如下:

配置javadoc后, 执行 mvn javadoc:javadoc 命令, 就会在..\target\site\apidocs目录下生成 apidocs信息
2、Cobertura配置如下:

配置Cobertura后, 执行 mvn cobertura:cobertura 命令, 就会在..\target\site\cobertura目录下,生成测试代码覆盖主代码情况信息。
maven(一)初步搭建,项目结构的更多相关文章
- SSH项目搭建(三)——Maven多模块搭建项目
多模块开发,大致的思想就是把一个项目按某种方式分成多个模块,再把模块们连接成一个整体,我们在开发的时候,可以很清晰的操作每一个模块,可以大大提高开发的效率. Java web项目,最常见的就是按代码的 ...
- Maven 基础环境搭建 项目依赖jar包导入
一.创建一个Maven工程 不清楚的话请查阅其它文档. 二.引入项目依赖的jar包 1.Spring 2.SpringMvc 3.Mybatis 4. 数据库连接池,驱动 5.其它(jstl.serv ...
- vue-cli搭建项目结构及引用bootstrap
vue-cli脚手架工具快速构建项目架构: 1.首先默认了有已经安装了node,然后依次执行以下命令: npm install -g vue-cli 全局安装vue ...
- 新建一个兼容eclipse和myeclipse、IDEA都兼容的项目结构(maven)
以下观点为个人理解,没实践过,后续再实现. 思路: 1.eclipse和myeclipse.IDEA这些开发工具新建的各自的项目时,都有自己的一套思路,项目结构都有各自的特点. 2.如果是这些开发工具 ...
- javaweb的maven项目结构
本来准备看javaweb的项目结构,因为之前自己建maven的项目结构,总是各种出错,后来干脆用maven自己携带的项目结构. 一个最基本的web目录结构如下,红框部分为必须有的,其他的随意. 这是一 ...
- 使用maven构建多模块项目,分块开发
在多人使用Maven协作开发项目时,尤其是稍微上点规模的项目,每个RD的工作都细分到具体功能和模块,有些模块甚至还要单独部署. 我们假设有这样一个商城项目,包括以下几个模块: 商城前台(shop) 管 ...
- 玩转IDEA项目结构Project Structure,打Jar包、模块/依赖管理全搞定
前言 你好,我是A哥(YourBatman). 如何给Module模块单独增加依赖? 如何知道哪些Module模块用了Spring框架,哪些是web工程? IDEA如何打Jar包?打War包? 熟练的 ...
- ASP.NET MVC5+EF6+LayUI实战教程,通用后台管理系统框架(5)- 创建项目结构
前言 关于理论知识,我的表达能力有限,知识水平有限,就不过多的讲解编程工作中的专用术语了,大家写的代码多了,自然就懂了 前几节课,我们看到了后台的主页面,以及一个自认为比较漂亮的登录界面,算是编程套路 ...
- 【maven + hibernate(注解) +spring +springMVC】 使用maven搭建项目
研究,百度,查资料+好友帮助,使用MyEcplise2015工具,通过maven搭建hibernate+springMVC+spring的项目,数据库采用MySql5.5 不过使用的版本会在项目搭建过 ...
随机推荐
- c#实现打印功能,可以设置纸张大小,字体和颜色等
/// <summary> /// 打印的按钮 /// </summary> /// <param name="sender"></par ...
- Dire Wolf ---hdu5115(区间dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115 题意:有一排狼,每只狼有一个伤害A,还有一个伤害B.杀死一只狼的时候,会受到这只狼的伤害A和这只 ...
- centos磁盘爆满,查找大文件并清理
今天发现vps敲入crontab -e 居然提示 “Disk quota exceeded” 无法编辑.于是"df -h"查了查发现系统磁盘空间使用100%了.最后定位到是/var ...
- Android 闹钟设置
在Android中可以通过AlarmManager 来实现闹钟,AlarmManager类是专门用来设定在某个指定的时间去完成指定的事件.AlarmManager 提供了访问系统警报的服务,只要在程序 ...
- Linux系统中的load average
1. load average 定义 linux系统中的Load对当前CPU工作量的度量.简单的说是进程队列的长度. Load Average 就是一段时间 (1 分钟.5分钟.15分钟) 内平均 L ...
- CNN卷积神经网络在自然语言处理的应用
摘要:CNN作为当今绝大多数计算机视觉系统的核心技术,在图像分类领域做出了巨大贡献.本文从计算机视觉的用例开始,介绍CNN及其在自然语言处理中的优势和发挥的作用. 当我们听到卷积神经网络(Convol ...
- SQL Server 联表字段合并查询
经常遇到统计报表中,子表记录合并为一个字段的情况.例如:省表中各省经济水平前五的城市统计. 有如下两表:dbo.省 和 dbo.市 (好吧,你可能会吐槽为什么用中文表名,其实我是为了方便查找替换) 这 ...
- Android 判断用户2G/3G/4G移动数据网络
Android 判断用户2G/3G/4G移动数据网络 在做 Android App 的时候,为了给用户省流量,为了不激起用户的愤怒,为了更好的用户体验,是需要根据用户当前网络情况来做一些调整的,也可以 ...
- leetcode:Rotate Array
Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array ...
- 谷歌的ajax.googleapis.com被墙导致访问很多国外网站很慢的解决方法
比如访问StackOverflow, 更比如flexerasoftware.com(导致Visual Studio的打包程序InstallShield Limited Edition不能注册和下载) ...