Maven入门使用(一)
一、什么是maven
一般认为maven是项目构建工具+依赖管理工具+项目信息管理工具。
maven是一个强大的构建工具,能够帮助我们自动化构建过程。
清理、编译、测试、生成报告、打包、部署都是可以通过maven自定义的命令一步完成,不需要我们一步步去手动执行。
同时,maven也帮助我们标准化构建过程。如果手动构建,一千个程序员就有一千种构建方式,这给团队合作带来很大的不便。
最后,maven是跨平台的,对外它提供了一致的接口。不管你是在Windows 还是Linux下,使用的maven命令都是一样的。
maven还是一个强大的依赖管理工具。以前我们做项目时候,通常需要去网上下载无数个jar包,包含到我们的编译路径中。
然而在项目合作中,很难保证每一个程序员下载的jar包一致(版本号不一致是最常见的)。
混乱的jar包导致开发过程出现各种奇怪的问题(最常见的就是工程在你的电脑上跑是ok的,在另外一个人的电脑上跑是failed)。
而maven终结了这一混乱。maven提供了远程仓库,你只要提供jar包的groupId,artifactId和version,就可以下载到想要的jar包。
借用数学中的三维坐标系,maven远程仓库使用groupId,artifactId和version来构建jar包的三维坐标系。
最后maven还是一个项目信息管理工具。
maven帮助我们管理原本分散在项目中各个角落的项目信息,包括项目描述、开发者列表、版本控制系统地址、许可证、缺陷管理系统地址等。
通过maven我们可以轻松地获取我们想要的信息。
二、maven的简单使用
在maven官网中,有一个maven快速入门使用的介绍,官网5分钟入门。
翻译成中文就是:
1、生成一个典型的maven项目
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
上面命令行中,groupId表示该maven项目隶属的项目名;artifactId表示当前maven项目的构建名(当前maven项目的名字,这里是my-app);
archetypeArtifactId表示maven项目的类型;interactiveMode表示交互方式,如果是false就表示不需要一步步交互。
2、进入生成的项目中
cd my-app
我们可以看到一个标准的项目结构
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
其中,src/main/java目录下包含了所有的源码,src/test/java目录下则是所有的测试代码。
根目录下的pom.xml就是我们的项目对象模型。里面包含我们项目所有的依赖关系。
<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>
3、构建项目
mvn package
使用上面的命令我们就对my-app进行了构建。
可以从命令行中可以看到mvn package其实执行了很多步步骤,其中包括resource、compile、testResource、testCompile、test等。
Maven入门使用(一)的更多相关文章
- Maven入门详解
什么是Maven Maven,鼎鼎大名,在今天之前,我对于它一直是处于一种"只闻其名不见其人"的状态.之所以说"只闻其名",是因为Maven太有名了,它是Apa ...
- Maven 入门 (2)—— 创建Maven项目
http://blog.csdn.net/kakashi8841/article/details/17427043 读这篇文章之前请先确保你成功安装了maven,如果你还没安装成功,请先看:Maven ...
- Maven 入门 (1)—— 安装
Maven 入门 (1)—— 安装 http://blog.csdn.net/kakashi8841/article/details/17371837 1.下载maven安装包 http://mave ...
- Maven入门示例(3):自动部署至外部Tomcat
Maven入门示例(3):自动部署至外部Tomcat 博客分类: maven 2012原创 Maven入门示例(3):自动部署至外部Tomcat 上一篇,介绍了如何创建Maven项目以及如何在内 ...
- maven 入门
Apache Maven 入门篇 ( 上 ) 作者:George Ma 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法.这 ...
- Apache Maven 入门篇 ( 上 )
作者:George Ma 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法. 这个入门篇分上下两篇.本文着重动手,用 mav ...
- Maven入门系列(二)--设置中央仓库的方法
原文地址:http://www.codeweblog.com/maven入门系列-二-设置中央仓库的方法/ Maven仓库放在我的文档里好吗?当然不好,重装一次电脑,意味着一切jar都要重新下载和发布 ...
- [转]Apache Maven 入门篇 ( 上 )
原文地址:Apache Maven 入门篇 ( 上 ) 作者:George Ma 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这 ...
- [转]Apache Maven 入门篇(下)
原文地址: Apache Maven 入门篇(下) 作者:George Ma 第一篇文章大概的介绍了一下Apache Maven以及它的下载和安装,并且运行了一个简单的示例.那么在对maven有了一点 ...
- Apache Maven 入门
Apache Maven 入门篇 ( 上 ) Apache Maven 入门篇 ( 下 ) ~$mvn archetype:generate -DgroupId=com.mycompany.hello ...
随机推荐
- UVA 1647 Computer Transformation
https://vjudge.net/problem/UVA-1647 题意: 开始有一个1,接下来每一步1变成01,0变成10 问n不之后00的个数 打表找规律 第3步之后: 如果第i步之后有x个字 ...
- 782B. The Meeting Place Cannot Be Changed 二分 水
Link 题意:给出$n$个坐标$x_i$,$n$个速度$v_i$问使他们相遇的最短时间是多少. 思路:首先可肯定最终相遇位置必定在区间$[0,max(x_i)]$中,二分最终位置,判断左右部分各自所 ...
- CSS 颜色属性
一.十六进制表示,如: a{ color: #F0E68C; } 当RGB一样时,可以简写,如#AABBCC 可以写成 #ABC 二.rgb(r,g,b)形式,其中rgb的值为1~255之间,如: a ...
- Centos7系统环境下Solr之Java实战(一)搭建solr服务器
搭建步骤 1.分别上传tomcat.sorl到指定文件夹并解压 2.把solr部署到Tomcat下 通过命令 cp apache-tomcat-7.0.47 /usr/local/sorl/tomca ...
- 51Nod 1256 扩展欧几里得求乘法逆元
给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的. Input 输入2个数M, N中间用 ...
- 2017 ACM暑期多校联合训练 - Team 3 1008 HDU 6063 RXD and math (莫比乌斯函数)
题目链接 Problem Description RXD is a good mathematician. One day he wants to calculate: ∑i=1nkμ2(i)×⌊nk ...
- jq时间日期插件的使用-datetimepicker
分三步 首先引入各种包 然后搞哥容器用id 然后加入一段js 实例: 下载:http://files.cnblogs.com/files/wordblog/datetimepicker-maste ...
- Mysql储存过程5: while
循环结构 while create procedure name() begin while 条件 do SQL语句 end while; end$ create procedure aa6() be ...
- python基础===将Flask用于实现Mock-server
from flask import Flask from flask import request, Response, jsonify import random import string app ...
- caffe Python API 之Model训练
# 训练设置 # 使用GPU caffe.set_device(gpu_id) # 若不设置,默认为0 caffe.set_mode_gpu() # 使用CPU caffe.set_mode_cpu( ...