Maven学习
Maven导读
构建项目
Maven是一个异常强大的构建工具,能够帮我们自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。通过Maven,我们只需要输入简单的命令(如mvn clean install),就会帮我们处理繁琐的任务。
Maven是跨平台的。
Maven最大化的消除了构建的重复,抽象了构建生命周期,并且为绝大部分的构建任务提供了已实现的插件。比如说测试,我们只需要遵循Maven的约定编写好测试用例,当我们运行构建的时候,这些测试便会自动运行。
除此之外,Maven能帮助我们标准化构建过程。在Maven之前,十个项目可能有十种构建方式,但通过Maven,所有项目的构建命令都是简单一致的。有利于促进项目团队的标准化。
Maven不仅仅是构建工具
Maven通过坐标系统准确的定位每一个构建(artifact),也就是通过一组坐标Maven能够找到任何一个Java类库(如Jar文件)。所以通过Maven可以解决版本不一致、版本冲突、依赖臃肿等问题。
Maven还能帮助我们管理原本分散在项目中各个角落的项目信息,例如项目描述、开发者、许可证等。通过Maven自动生成的站点,以及一些插件,可以轻松获得项目文档、测试报告、静态分析报告、源码版本日志报告等信息。
Maven基础知识
常用构建命令
mvn -v 查看maven版本
mvn compile 编译
mvn test 测试
mvn package 打包
mvn clean 删除target
mvn install 安装jar包到本地仓库中
自动创建目录骨架
Maven提供archetype插件,该插件用于创建符合maven规定的目录骨架。
下面是Maven规定的目录骨架。其中target目录会在执行compile、package等命令的时候生成,里面存放编译后的文件、日志、jar包等文件。1
2
3
4
5
6
7
8
9src
main
java
程序代码
test
java
测试代码
target
pom.xml
在CMD窗口,输入mvn archetype:generate
(第一次使用的时候,Maven会自动下载相关的jar包等文件)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29Choose org.apache.maven.archetypes:maven-archetype-quickstart version:
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1
Choose a number: 6: (在这一步直接回车)
Define value for property 'groupId': : org.lihui.mavenDemo (可通常我们填写组织机构名称倒写+项目名)
Define value for property 'artifactId': : mavenDemo (项目名称,后边也可以加上对应的模块名称)
Define value for property 'version': 1.0.0-SNAPSHOT: : (版本号,直接回车,默认1.0-SNAPSHOT)
Define value for property 'package': mavenDemo: : (打包后的jar文件名,相当于.net中项目最后生成的程序集dll名称)
Confirm properties configuration:
groupId: org.lihui.mavenDemo
artifactId: mavenDemo
version: 1.0.0-SNAPSHOT
package: mavenDemo
Y: : (直接回车确认)
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: cnblogs
[INFO] Parameter: packageName, Value: cnblogs
[INFO] Parameter: package, Value: cnblogs
[INFO] Parameter: artifactId, Value: maven-hello-world
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS (看到这个,表示项目创建成功!)
[INFO] ------------------------------------------------------------------------