一、什么是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等。

最新文章

  1. js类式继承模式学习心得
  2. hibernate学习(设计一对多 关系 映射)
  3. .net xml 增删改查基础复习及干货分享
  4. [CareerCup] 9.6 Generate Parentheses 生成括号
  5. 由单例模式学到:volatile关键字
  6. Android ViewFlipper控件实例
  7. CCNA 6.6
  8. JAVA之While语句、Do和For语句
  9. JAVA多态需要注意的一些问题
  10. poj2443(简单的状态压缩)
  11. LeetCode-Maximum Subarray[dp]
  12. 寻找DevExpress破解经历之旅
  13. fast-ai lesson1 错误处理(CNN创建)
  14. MT【322】绝对值不等式
  15. Jquery 点击事件重复获取叠加 (一)
  16. Python读取ini配置文件的方式
  17. 大数据技术之_16_Scala学习_05_面向对象编程-中级
  18. sql 2012先分离迁移mdf mlf 文件到别的机器后附加 数据库成只读的修复方法
  19. guake终端复制标签页
  20. Cmder | 一款命令行增强工具

热门文章

  1. CSS3笔记-加强版
  2. C# 遍历枚举
  3. UIDynamicBehavior的行为类翻译
  4. 基本控件文档-UITextField属性---iOS-Apple苹果官方文档翻译
  5. JSP分页之结合Bootstrap分页插件进行简单分页
  6. yii2-widget-fileinput英文文档翻译
  7. 深入理解Spring系列之二:BeanDefinition解析
  8. python基础===数据伪造模块faker
  9. linux wc命令的作用。
  10. HDU 6201 2017沈阳网络赛 树形DP或者SPFA最长路