Maven 学习第一步[转载]
转载至:http://www.cnblogs.com/haippy/archive/2012/07/04/2576453.html
什么是 Maven?(摘自百度百科)
Maven是Apache的一个顶级的项目:http://maven.apache.org/
Maven这个单词来自于意第绪语,意为知识的积累,最早在Jakata Turbine项目中它被用来简化项目的构建过程。当时有很多项目,它们的Ant build文件仅有细微的差别,而JAR文件都由CVS来维护。于是Maven创始者开始了Maven这个项目,该项目的清晰定义包括,一种很方便的发布项目信息的方式,以及一种在多个项目中共享JAR的方式。
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven 包含一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。
Maven 能够帮助我们干什么?
简言之,Maven 可以帮助我们完成以下工作:
- 项目构建
- 文档管理
- 生成测试报告
- 解决项目间依赖项
- 源代码版本管理
- 项目Releases
- 项目的分发
Maven 关键词
- Project:
- 任何你想 build 的事物,Maven都会把它们当作是一个 Project。
- 这些 Project 被定义为 POM(Project Object Model)。
- 一个 Project 可以依赖其他的project,一个 project 也可以有多个子project组成。
- POM:
- POM(pom.xml) 是 Maven 的核心文件,它是指示 Maven 如何工作的元数据文件,类似 ant 的 build.xml 文件。
- pom.xml 文件应该位于每个 Project 的根目录。
- GroupId:
- 顾名思义,这个应该是公司名或组织名。
- ArtifactId:
- 构建出来的文件名,一般来说或,这个也是project名。
- Packaging:
- 项目打包的类型,可以是将jar、war、rar、ear、pom,默认是jar。
- Version:
- 项目的版本,项目的唯一标识由 groupId+artifactId+packaging+versionz 组成。
- Dependency:
- 为了能够 build 或运行,一个典型的java project会依赖其他的包,在Maven中,这些被依赖的包就被称为 dependency。
- Plug-in:
- Maven是有插件组织的,它的每一个功能都是由插件提供的,主要的插件是由 java 来写的,但是他也支持 beanshell 和 ant 脚本编写的插件。
- Repository:
- 仓库用来存放artifact的,可以是本地仓库,也可以是远程仓库,Maven是由一个默认的仓库
- Snapshot:
- 工程中可以(也应该)有这样一个特殊的版本:这个版本可以告诉Maven,该工程正在处于开发阶段,会经常更新(但还为发布)。当其他工程依赖此类型的artifact时,Maven会在仓库中寻找该artifact的最新版本,并自动下载、使用该最新版本。
Maven 常见命令

| mvn archetype:create | 创建Maven项目 |
| mvn compile | 编译源代码 |
| mvn test | 运行应用程序中的单元测试 |
| mvn install | 在本地Respository中安装jar |
| mvn eclipse:eclipse | 生成eclipse项目文件 |
| mvn jetty:run | 启动jetty服务 |
| mvn clean | 清除项目目录中的生成结果 |
| mvn site | 生成项目相关信息的网站 |
| mvn package | 根据项目生成的jar |
Maven的默认生命周期

| Default Lifecycle | 生命周期阶段 | 描述 |
| validate | 验证 | 确保当前配置和 POM 的内容是有效的。这包含对 pom.xml 文件树的验证。 |
| initialize | 初始化 | 在执行构建生命周期的主任务之前可以进行初始化。 |
| generate-sources | 生成源码 | 代码生成器可以开始生成在以后阶段中处理或编译的源代码。 |
| process-sources | 处理源码 | 提供解析、修改和转换源码。常规源码和生成的源码都可以在这里处理。 |
| generate-resources | 生成资源 | 可以生成非源码资源。通常包括元数据文件和配置文件。 |
| process-resources | 处理资源 | 处理非源码资源。修改、转换和重定位资源都能在这阶段发生。 |
| compile | 编译 | 编译源码。编译过的类被放到目标目录树中。 |
| process-classes | 处理类 | 处理类文件转换和增强步骤。字节码交织器和常用工具常在这一阶段操作。 |
| generate-test-sources | 生成测试源码 | mojo 可以生成要操作的单元测试代码。 |
| process-test-sources | 处理测试源码 | 在编译前对测试源码执行任何必要的处理。在这一阶段,可以修改、转换或复制源代码。 |
| generate-test-resources | 生成测试资源 |
允许生成与测试相关的(非源码)资源。 |
| process-test-resources | 处理测试资源 | 可以处理、转换和重新定位与测试相关的资源。 |
| test-compile | 测试编译 | 编译单元测试的源码。 |
| process-test-classes | 对测试编译生成的文件做后期处理(需Maven2.0.5及以上) | |
| test | 测试 | 运行编译过的单元测试并累计结果。 |
| prepare-package | 执行打包前的所有操作(需Maven2.1及以上) | |
| package | 打包 | 将可执行的二进制文件打包到一个分布式归档文件中,如 JAR 或 WAR。 |
| pre-integration-test | 前集成测试 | 准备集成测试。这种情况下的集成测试是指在一个受到一定控制的模拟的真 实部署环境中测试代码。这一步能将归档文件部署到一个服务器上执行。 |
| integration-test | 集成测试 | 执行真正的集成测试。 |
| post-integration-test | 后集成测试 | 解除集成测试准备。这一步涉及测试环境重置或重新初始化。 |
| verify | 检验 | 检验可部署归档的有效性和完整性。过了这个阶段,将安装该归档。 |
| install | 安装 | 将该归档添加到本地 Maven 目录。这一步让其他可能依赖该归档的模块可以使用它。 |
| deploy | 部署 |
将该归档添加到远程 Maven 目录。这一步让这个工件能为更多的人所用。 |
在 Eclipse中 使用 Maven
Eclipse的Maven插件m2eclipse:http://www.sonatype.org/m2eclipse/
Maven 学习第一步[转载]的更多相关文章
- Java基础 之软引用、弱引用、虚引用 ·[转载]
Java基础 之软引用.弱引用.虚引用 ·[转载] 2011-11-24 14:43:41 Java基础 之软引用.弱引用.虚引用 浏览(509)|评论(1) 交流分类:Java|笔记分类: Ja ...
- Java 学习第一步-JDK安装和Java环境变量配置
Java学习第一步——JDK安装及Java环境变量配置 [原文] 2014-05-30 9:09 Java SE 阿超 9046 views Java作为当下很主流的编程语言,学习Java的朋 ...
- Qt 学习第一步 做计划和确定目标
接下来開始一步步深入学习Qt. 学习的第一步是整理资料,也就是找书和sample. 逛了一些论坛,推荐以下3本书 1> C++ GUI programming with Qt 4(2nd Edi ...
- java学习第一步,使用IntelliJ IDEA编写自己的第一个java程序
首先下载java的jdk,然后说一下IDEA的配置 IntelliJ IDEA目前公认的最好的java开发工具,不过一般的学校的教学还是使用eclipse来进行java的开发.所以老师一般只会教你如何 ...
- Java学习第一步: Win7配置JDK环境
转摘"专注JavaWeb开发":http://www.javaweb1024.com/java/Javajichu/2015/03/02/353.html 下载JDK并安装到本机 ...
- Struts2 学习第一步准备工作
第一步:安装下载MyEclispe10 对于MyEclispe的下载安装就不再详述了. 第二步:下载Struts-2.3.15 Struts-2.3.15下载地址: http://struts.apa ...
- Mysql的热备份[转载]
学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始 ...
- Maven 目录结构[转载]
转载至:http://www.cnblogs.com/haippy/archive/2012/07/05/2577233.html Maven 标准目录结构 好的目录结构可以使开发人员更容易理解项目, ...
- [转载] SSH入门学习基础教程
在Linux系统中,OpenSSH是目前最流行的远程系统登录与文件传输应用,也是传统Telenet.FTP和R系列等网络应用的换代产品.其 中,ssh(Secure Shell)可以替代telnet. ...
随机推荐
- nodejs:使用puppeteer在服务器中构建一个获取电影电视剧剧集的接口
首先我们看下数据来源: 来源于这个网站:https://z1.m1907.cn/ 可以说这个网站上能找到很多你想看的很多电影或电视剧,最重要的是很多电影电视剧在别的网站是收费的,但是在这里看是免费的, ...
- 力扣 - 剑指 Offer 66. 构建乘积数组
题目 剑指 Offer 66. 构建乘积数组 思路1 按照一般的思路就是将所有的相乘,然后除以每一位数字就是答案,但是题目要求我们不能使用除法,因此我们会想到每次遍历到每个数字的时候,在遍历一遍数组, ...
- C# StringBuilder和string
StringBuilder和string 1.string是引用类型还是值类型 MSDN官方说string是引用类型: 引用类型:引用分配栈内存,引用类型本身的数据存储在堆中: 值类型:在函数中创建, ...
- Red Hat Enterprise Linux (RHEL) 9 更新了什么,即 Rocky Linux 9 和 AlmaLinux 9 展望
请访问原文链接:https://sysin.org/blog/rhel-9-vision/,查看最新版.原创作品,转载请保留出处. 作者:gc(at)sysin.org,主页:www.sysin.or ...
- 该虚拟机似乎正在使用中。如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权
问题 打开虚拟机镜像时报 VMware该虚拟机似乎正在使用中.如果该虚拟机未在使用,请按"获取所有权(T)"按钮获取它的所有权 解决方法 在你安装的镜像文件目录下找到后缀为.vmx ...
- 论文翻译:Fullsubnet: A Full-Band And Sub-Band Fusion Model For Real-Time Single-Channel Speech Enhancement
论文作者:Xiang Hao, Xiangdong Su, Radu Horaud, and Xiaofei Li 翻译作者:凌逆战 论文地址:Fullsubnet:实时单通道语音增强的全频带和子频带 ...
- No versions available for io.grpc:grpc-core:jar:[1.13.1] within specified range
No versions available for i{0}:[1.13.1] within specified range maven打包的时候报错是由于同一个jar包有多个版本导致的版本冲突 解决 ...
- Java线程状态及同步锁
线程的生命历程 线程的五大状态 创建状态:简而言之,当创建线程对象的代码出现的时候,此时线程就进入了创建状态.这时候的线程只是行代码而已.只有调用线程的start()方法时,线程的状态才会改变,进入就 ...
- IO流(二)
一:字符流 字符输入流 写入文件字符流 import java.io.FileWriter; import java.io.IOException; //fileWriter public class ...
- 『学了就忘』Linux软件包管理 — 46、yum命令详细介绍
目录 1.yum命令的查询操作 2.使用yum命令安装服务 3.使用yum命令升级服务 4.使用yum命令卸载服务 5.yum组管理命令 (1)查询可以安装的软件组 (2)查询软件组内包含的软件 (3 ...