【手把手教你Maven】构建过程
Maven是一款进行 依赖管理、项目构建、信息管理 为一体的工具。
它不像Make具有复杂的命令、也不像Ant需要手动编写大量的重复代码就能进行项目的构建;
还能提供强大的依赖库管理,避免jar包混乱与冲突;
还可以方便的管理项目的信息、知识产权等内容。
本篇的写作目的在于帮助那些之前没有使用过,或者是对maven还没有太多概念的朋友,学会使用maven,利用maven进行项目的构建。
通过讲解Maven的下载、安装、编写、执行任务,快速体验Maven的工作模式与使用技巧...
下载
目前高版本的Eclipse已经集成了Maven,但是考虑到插件的稳定性,还是推荐使用自己安装的Maven(需要在Eclipse中进行绑定)。
手动安装需要在官网下载Maven,目前最新的版本是3.3.9:http://maven.apache.org/download.cgi

一般windows下的用户下载这个zip就可以了,如果要学习源码,可以下载src那版的。
安装
1 首先需要安装JDK,在命令行中输入java -version验证版本:

2 然后解压下载好的压缩包:

3 配置环境变量
在“环境变量”中配置:
M2_HOME:xxxx/apache-maven-3.3. 在path中添加:";%M2_HOME%/bin"
4 在命令行中输入 mvn -v测试

编写
如果使用过Ant都知道Ant是通过build.xml执行构建任务的,Maven中是通过pom.xml来执行任务。
POM,project object model,即项目对象模型,它通过这个pom.xml描述一个项目的构建以及信息。
<?<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xinoo.test</groupId>
<artifactId>first-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<name>First Maven Project</name>
</project>
第一行指定了文档的XML版本和编码
第二行即每个pom.xml的核心元素——project
project下面有几个子元素,这几个子元素一般是每个项目都会使用到的:
1 modelVersion 这个元素指定了POM的版本,Maven2或者Maven3 都只能是4.0.0
2 groupId 是项目组的ID,一般是com.公司组织名.项目名
3 artifactId 是该项目在项目组中的ID,比如当前的项目是项目组的一个代理项目,就可以叫做myproxy
4 version 是项目的版本号,用于维护项目的升级和发布
5 name 一般没有实际的用处,只是用于标识该项目
比较重要的参数是 groupId、artifactId、version,这三个属性确定唯一的一个项目。
执行任务
一般的Maven项目会包含这样一个目录树:
project
|-src--main--java--你的源代码
| |--test----java--你的单元测试代码
|-target--编译出的文件和jar包
|-pom.xml--项目信息以及任务定义
因此我们在上面的pom.xml同级目录中,创建
src/main/java/com/xingoo/test/firstmaven 文件夹
然后再该文件夹中创建HelloWorld.java
package com.xingoo.test.firstmaven;
public class HelloWorld{
    public String sayHello(){
        return "Hello Maven";
    }
    public static void main(String[] args){
        System.out.println(new HelloWorld().sayHello());
    }
}
然后再pom.xml所在的目录中运行mvn clean compile命令:

会发现目录中多了一个target文件夹,文件夹中增加了两个文件夹:

其中classes中是java编译出的class文件、maven-status是依赖的compile插件。
参考
【1】最后的任务执行样例:百度云盘文件mvn1127.zip
【2】《Maven实战》:百度云盘文件Maven实战教程
【手把手教你Maven】构建过程的更多相关文章
- maven构建过程
		
[转载]原地址:http://www.cnblogs.com/xdp-gacl/p/4051690.html 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自 ...
 - 手把手教你如何构建Vue前端组件库
		
在前端开发中可能会遇到将相同的功能模板集合成一个组件,供他人调用,这样可以减少重复造轮子,也可以节约人力.财力,更能够提高代码的可维护度:下面将通过详细的步骤教你如何构建一个Vue前端组件. 1.在本 ...
 - 6.Maven构建过程的各个环节
		
构建过程中的各个环节 [1]清理:将以前编译得到的旧的class字节码文件删除,为下一次编译做准备 [2]编译:将Java源程序编译成class字节码文件 [3]测试:自动测试,自动调用junit程序 ...
 - Maven初级学习(一)手把手教你Maven安装
		
序:学习安装Maven,在Windows和Unix系统上. 一.Windows系统安装MVN 前提正确安装JDK1.5以上的版本 1 下载最先版Mvn http://maven.opache.org/ ...
 - 手把手教你使用VUE+SpringMVC+Spring+Mybatis+Maven构建属于你自己的电商系统之vue后台前端框架搭建——猿实战01
		
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,跟着教程走下来,变身猿人找到工作不是 ...
 - 手把手教你用 FastDFS 构建分布式文件管理系统
		
说起分布式文件管理系统,大家可能很容易想到 HDFS.GFS 等系统,前者是 Hadoop 的一部分,后者则是 Google 提供的分布式文件管理系统.除了这些之外,国内淘宝和腾讯也有自己的分布式文件 ...
 - Maven学习总结(二)——Maven项目构建过程练习
		
上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程 一.创建Maven项目 1.1.建立Hello项目 1.首先建立Hello项目,同时建立M ...
 - Maven学习总结(二)——Maven项目构建过程练习_转载
		
上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程 一.创建Maven项目 1.1.建立Hello项目 1.首先建立Hello项目,同时建立M ...
 - 转】Maven学习总结(二)——Maven项目构建过程练习
		
原博文出自于:http://www.cnblogs.com/xdp-gacl/p/4051690.html 感谢! 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven ...
 
随机推荐
- 第3月第9天 循环引用 block
			
一.一个对象没有被引用,那么在函数块完成时就会被dealloc,这种情况因为对象销毁了,block块也永远不会执行. MyNetworkOperation *op = [[MyNetworkOpera ...
 - 用Bitbucket搭建博客初探
			
本博客是搭建在GitHub上的静态博客,但是由于GitHub免费账户不能创建私有仓库,导致有些东西不想放在GitHub上. 前两天,在免费资源部落上发现了Bitbucket,它和GitHub类似,也是 ...
 - 【Python基础学习三】数字(Number)
			
Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. Python 四种数值类型: 整型(Int) - 通常 ...
 - Dynamic range compression
			
这段时间终于把手头的东西都搞完了,还剩下一个AEC这个模块,这个模块跟整个系统机制有很大关系,单独的模块意义不大. 另外,刚写完一个分类器,希望能大幅提升音乐流派分类的准确率. 下周正式开搞AEC,把 ...
 - css content 如何自定义生成图标?
			
作者:仅愚链接:https://www.zhihu.com/question/22022905/answer/20585820来源:知乎著作权归作者所有,转载请联系作者获得授权. :before(或: ...
 - 深入解析PHP中的(伪)多线程与多进程
			
本篇文章是对PHP中的(伪)多线程与多进程进行了详细的分析介绍,需要的朋友参考下 (伪)多线程:借助外力利用WEB服务器本身的多线程来处理,从WEB服务器多次调用我们需要实现多线程的程序.QUOTE: ...
 - c# 正则表达式用法
			
C#正则表达式Regex类的用法 更多2014/2/18 来源:C#学习浏览量:41529 学习标签: 正则表达式 Regex 本文导读:正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串, ...
 - tp5 中 model 的删除方法
			
根据主键删除(推荐) use app\index\model\User as UserModel; public function delete(){ UserModel::destroy([1,2, ...
 - cisco-log
			
每个日志消息被关联一个严重级别,用来分类消息的严重等级:数字越低,消息越严重.严重级别的范围从0(最高)到7(最低). 日志消息的严重级别,使用logging命令可以用数字或者名称来指定严重性. ...
 - hdu 1502 Regular Words
			
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1502 思路:给定一个n,分别由n个a,b,c组成的字符串的所有前缀中a的个数大于等于b的个数大于等于c的个 ...