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 ...
随机推荐
- checkbox选择根据后台List数据进行回显
需求:记住用户已经选择的 checkbox 选项,当用户再次对该 checkbox 进行选择操作时,应对该用户已经选择的 checkbox 选项进行选中操作. 示例代码: checkbox,js遍历后 ...
- SSM框架使用-wrong
mybatis手册 1. mybatis 绑定错误 如果出现: org.apache.ibatis.binding.BindingException: Invalid bound statement ...
- 数学:Nim游戏和SG函数
有若干堆石子,两人轮流从中取石子,取走最后一个石子的人为胜利者 以下的性质是显然的 .无法移动的状态是必败态 .可以移动到必败态的局面一定是非必败态 .在必败态做所有操作的结果都是非必败态 在普通Ni ...
- ASP.NET网站伪静态下使用中文URL
首先解释一下,什么是中文URL呢?它并不是我们常见的把汉字编码为 %CF%EC 这种形式,而是在URL中直接使用汉字 这种形式目前还不是很多见.因为不同的浏览器处理起来可能会有所不同,不过据我测试,I ...
- 【BZOJ】4318: OSU! 期望DP
[题意]有一个长度为n的01序列,每一段极大的连续1的价值是L^3(长度L).现在给定n个实数表示该位为1的概率,求期望总价值.n<=10^5. [算法]期望DP [题解]后缀长度是一个很关键的 ...
- 【代码优化】调用optional delegates的最佳方法
[转载请注明出处]http://www.cnblogs.com/lexingyu/p/3932475.html 本文是以下两篇blog的综合脱水,感谢两位作者为解放码农生产力所做的深入思考=.= Sm ...
- 2017ACM暑期多校联合训练 - Team 7 1010 HDU 6129 Just do it (找规律)
题目链接 Problem Description There is a nonnegative integer sequence a1...n of length n. HazelFan wants ...
- 2017ACM暑期多校联合训练 - Team 1 1006 HDU 6038 Function (排列组合)
题目链接 Problem Description You are given a permutation a from 0 to n−1 and a permutation b from 0 to m ...
- Ice Cream Tower Gym - 101194D (贪心 + 二分 )
题目链接 : https://cn.vjudge.net/problem/Gym-101194D 题目大意 : 给你n个冰激凌球,让你用这些冰激凌球去垒冰激凌,要求是下面的这一个必须是他上面一个的两倍 ...
- MongoDB 3.x 安装配置
目录 (见右侧目录栏导航)- 1. 安装Mongodb - 1.1 使用二进制包安装 - 1.2 运行MongoDB- 2. MongoDB 配置文件详解 - 2.1 说明 - ...