5分钟学习maven(根据英文文档整理)
英文原地址:http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
一、前提
需要懂得如何在计算机上安装软件。
二、安装
1、maven是一个java工具,所以得首先安装java。
2、下载maven,并安装安装指南一步步安装(解压、配置环境变量)。
3、测试:运行:mvn --version
三、建立一个项目
1、首先建立一个目录用于存放maven项目,这里假设为d:\mavenspace。并切换到该目录。
2、运行下面的命令。(其中archetype是plugin,generate是plugin中的goal)
注:如果是第一次运行这个命令,速度可能较慢,因为要maven会根据依赖关系下载很多对应的jar包。
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
3、运行命令cd my-app进入到maven生成的目录,会发现src/main/java目录、src/test/java目录、pom.xml文件。
4、POM文件
该文件是maven项目的核心配置文件。这是一个单独的配置文件包含了构建一个项目所必须的信息。POM文件可能很大但比不是所有的配置都需要了解。上面项目生成的POM文件如下:
<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>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging> <name>Maven Quick Start Archetype</name>
<url>http://maven.apache.org</url> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
5、刚才我做了什么?
我们运行了maven目标archetype:generate并给命令传递了一些参数。前缀archetype 包含了目标。这个和Ant很像,可以想象成Ant的Task。这个目标根据原型创建了一个简单的项目。插件是为了一些共同的目标而由一组目标组成的。举例来说,jboss-maven-plugin就是为了处理“各种各样jboss相关的问题”。
6、构建这个项目
a、运行命令:mvn package
不像我们运行的第一个命令(archetype:generate),这个命令只有一个单词:package。这不是一个目标,是一个阶段(phase),也就是项目构建生命周期中的一个过程。构建生命周期是一组有序的阶段的序列。当给定了一个阶段,maven会执行这个序列中在该阶段之前的所有阶段,也包括给定的阶段。举例来说,当我们执行compile这个阶段时,实际上被执行的阶段是:
validate
generate-sources
process-sources
generate-resources
process-sources
compile
b、用下面命令测试该编译和打包了的jar,输出结果应该是:Hello World!
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
四、运行Maven工具
1、maven阶段(maven phases)
尽管是一个很复杂的列表,下面是最常见的构建过程中的阶段。
validate:
compile:
test:
package:
integration-test:
verify:
install:
deploy:
除了上面默认的列表,这里还有两个构建过程阶段。
clean:清除前面构建生成的制品。
site:为这个项目生成站点文档。
注:阶段(phases)一般都对于潜在的目标(goals)。每个阶段执行的目标是依赖于项目的打包类型。举例来说,如果项目类型是JAR则package这个阶段执行jar:jar这个目标,如果项目类型是WAR则执行的是war:war这个目标。
一个有趣的事情是阶段和目标可以在一个序列中被执行。
mvn clean dependency:copy-dependencies package
举例来说,以上命令会首先清除项目生成文件、复制依赖、然后打包项目(当然会执行所有阶段直到打包这个阶段)。
2、构建站点(generating the site)
命令是:mvn site
这个阶段会根据项目的pom生成一个站点。你可以在target/site目录下看到生成的文档。
五、结论
我们希望这个快速的预览激起了你对maven多样性的兴趣。注意这个一个节选的快速开始的手册。如果你想对刚才那些你执行的动作有更加全面的和详细的了解,请阅读maven开始后的手册。
5分钟学习maven(根据英文文档整理)的更多相关文章
- py爬取英文文档学习单词
最近开始看一些整本整本的英文典籍,虽然能看个大概,但是作为四级都没过的我来说还是有些吃力,总还有一部分很关键的单词影响我对句子的理解,因为看的是纸质的,所以查询也很不方便,于是想来个突击,我想把程序单 ...
- 英文文档帮查&翻译计划
以CSDN为首,知乎其次,cnblog带路的一大批博客上充斥着大量低质量的编程入门教程,代码粗制滥造,毫无缩进,没有高亮,东抄西抄.初学者如果长期参照这种垃圾博客来解决问题,将会适得其反,走入歧途. ...
- Android 英文文档下载地址
通过英文Android API学习Android技术是一个不错选择,当然养鸡的专业户要小心了,以下分享一些下载英文文档的链接(请使用迅雷下载): https://dl-ssl.google.com/a ...
- openstack【Kilo】汇总:包括20英文文档、各个组件新增功能及Kilo版部署
OpenStack Kilo版本发布 20英文文档OpenStack Kilo版本文档汇总:各个操作系统安装部署.配置文档.用户指南等文档 Kilo版部署 openstack[Kilo]入门 [准备篇 ...
- Python3求英文文档中每个单词出现的次数并排序
[本文出自天外归云的博客园] 题目要求: 1.统计英文文档中每个单词出现的次数. 2.统计结果先按次数降序排序,再按单词首字母降序排序. 3.需要考虑大文件的读取. 我的解法如下: import ch ...
- gitlab安装教程、gitlab官网、英文文档
gitlab官网 https://about.gitlab.com/ gitlab安装和官网英文文档 https://about.gitlab.com/downloads/ 清华大学tuna镜像源 G ...
- PHP-redis英文文档
作为程序员,看英文文档是必备技能,所以尽量还是多看英文版的^^ PhpRedis The phpredis extension provides an API for communicating wi ...
- python3 怎么统计英文文档常用词?(附解释)
# coding: utf-8 # In[32]: #import requests #from bs4 import BeautifulSoup #res = requests.get(" ...
- 利用谷歌翻译网站和Adobe Acrobat翻译英文文档,且鼠标放置后显示英文原文(无字数限制)(18/12/11更新)
软件:Adobe Acrobat 网页:https://translate.google.cn/?tr=f&hl=zh-CN 方法: 第一步:用Adobe Acrobat 打开英文 ...
随机推荐
- [saiku] 访问saiku首页的时候前后台处理流程
这篇文章讲述:项目启动后,首次访问SAIKU的登录页,前后台分别做了什么处理 (1) 访问的到底是什么页面? 浏览器输入:localhost:8080 啪一回车 根据web访问的尿性,访问的是 ind ...
- Log 日志级别
一直对于程序中的日志级别有点模糊,今天专门百度学习下.遂成此文: 日志记录器(Logger)是日志处理的核心组件.log4j具有5种正常级别(Level).: 1.static Le ...
- C++继承与派生(原理归纳)
1. C++继承与java不同,java遵循单继承,但java的接口为其不足做了很好的弥补了. C++则是灵活的多,为多继承.即一个C++类可以同时继承N个类的属性. 2. 对于继承方式 : 有三 ...
- poj-----(2528)Mayor's posters(线段树区间更新及区间统计+离散化)
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 43507 Accepted: 12693 ...
- addViewController之后view里面的点击事件不响应
let dealsSeeMoreViewController = DealsSeeMoreViewController(owner: self) self.dealsStackView.addArra ...
- 创建交货单/外向交货BAPI_OUTB_DELIVERY_CREATE_SLS/STO
FUNCTION Z_SD_CREATE_DN. *"-------------------------------------------------------------------- ...
- 436. Find Right Interval ——本质:查找题目,因此二分!
Given a set of intervals, for each of the interval i, check if there exists an interval j whose star ...
- RedHat 安装MySQL数据库【转】
朋友购买了阿里云的服务器,服务器上自带有CentOS操作系统,但是开发软件需要自己安装,接下来将介绍本地RedHat Linux 5.10虚拟机上搭建Mysql数据库. 一.软件准备 (1)jdk ...
- linux 设置windows共享
在linux下需要设置windows共享. 我们使用SMBA来实现. 1.查看是否安装smba. rpm -qa | grep samba 如果没有安装,则去 www.rpmfind.net 下载sm ...
- OpenGL 和OpenGL ES简介
OpenGL的全称是Open Graphics Library,即开放的图形库接口,它定义了一个跨编程语言.跨平台的编程接口的规范,它主要用于三维图形(实际上二维图形也可以)变成.OpenGL的前 ...