Maven-项目管理工具
一. Maven的一些概念
1.Maven翻译为“专家”、内行,是跨平台的项目管理工具
2.Maven主要服务于基于Java平台的项目构建、依赖管理、项目信息管理。
①项目构建
项目构建的过程:
-> 清理项目:删除以前的编译结果,为重新编译做好准备。
-> 编译项目 :将Java.java文件编译为.class字节码文件。
-> 测试项目 :针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
-> 生成测试报告 :在每一次测试后以标准的格式记录和展示测试结果
-> 打包项目 :讲一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对应的是War包。
-> 部署项目:将打包的结果部署到远程仓库或将war包部署到服务器上运行。
每一个步骤就是一个项目的完整构建过程,理想的是构建高度自动化、跨平台、可重用的组件、标准化的特点的项目,使用Maven可以帮我们实现这些过程。
②依赖管理
依赖指的是jar包之间的相互依赖,比如我们搭建一个项目的时候,需要引入很多的jar包,管理起来很不方便,依赖管理指的就是使用Maven来管理项目中使用到的jar包。
Maven管理的方式:自动下载项目中所需要的的jar包、统一管理jar包之间的依赖关系.
3.构建:我们每天在写代码的时候,编译、运行单元测试、生成文档、打包、部署项目等相等于构建。而Maven的用途之一就是服务于构建,能够帮我们自动化构建过程,从清理、编译、测试、生成报告、打包、部署。我们只需要输入mvn命令,Maven会帮我们处理琐碎的操作。
4.Maven是跨平台的,这意味着无论是在Windows上,还是Linux或者Mac上,都可以使用同样的mvn命令。
5.在这个开源的年代里,几乎任何java应用都会借用一些第三方的开源类库,这些类库都可以通过依赖的方式引入到项目中来。随着依赖的增多,版本不一致、版本冲突、依赖 臃肿等问题都会出现。手工解决这些问题拉低我们的小路,Maven提供了一个优秀的解决方案,它通过一个坐标系统准确地定位每一个构建(artifact),也就是通过一组左边Maven能够找到任何一个Java类库(如jar文件),我们可以借助它来有序地管理依赖,轻松地解决那些繁杂的依赖问题。
6.Maven还未全世界的java开发者提供一个免费的中央仓库,几乎可以找到任何的流行开源类库。我们只要定位了坐标,Maven就能够帮我们自动下载。
7.一些构建工具:Make、Ant、gradle
8.maven的核心概念:pom、约定的目录结构、坐标、依赖管理、仓库管理、生命周期、插件和目标、继承、聚合。
二. Maven的下载:http://maven.apache.org/download.cgi
三. Maven目录解释
bin:该目录包含了mvn运行的脚本,这些脚本用来配置Java命令,当你在系统环境下配置好Maven的环境变量的时候,例如在cmd上面输入mvn命令的时候,就会调用里面的脚本,该目录还包含了mvnDebug和mvnDebug.bat两个文件,前者是UNIX平台的shell脚本,后者是Windows平台的bat脚本。该目录还包含m2.conf文件,这是classworlds的配置文件。
boot:含有Plexus-classwords类加载器框架,相对于默认的java类加载器。
conf:含有settings.xml配置文件,在里面可以定制Maven的行为。
lib:含有Maven运行时所需要的java类库,用户可以在这个目录中找到Maven内置的超级POM
LICENSE.rxt:记录了Maven使用的软件许可证:Apache License Version2.0;
NOTICE.txt:记录了Maven包含的第三方软件;
README.txt:包含了Maven的简要介绍,包括安装需求及如何安装的简要指令等。
四. Maven的手动构建项目
1.我们首先了解下Maven的一些指令
mvn compile :编译,将java源程序编译成.class字节码文件。
mvn test:测试项目,并生成测试报告。
mvn clean:将以前编译得到的.class字节码文件删除。
mvn package:打包,jar工程打成jar包,web工程打成war包。
mvn install:将项目生成jar包放在仓库中,以便别的模块的调用.
2.maven的pom文件一些标签含义
<!-- XML头,指定了该XML文档的版本和编码方式 -->
<?xml version="1.0"?>
<!--
project标签:project标签时所有的pom.xml的根元素,它还生命了一些POM相关的命名空间及xsd元素,这些属性能够让我们在第三方工具(IDEA)帮助我们快速编辑POM文件
-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
<!-- modelVersion:标签指定了当前POM模型的版本 -->
<modelVersion>4.0.0</modelVersion>
<!--
groupId标签:定义了项目属于哪个组,这个组往往和项目或公司存在关联。(其实相当于我们的java的包名)
-->
<groupId>com.imooc.app</groupId>
<!-- artifactId标签:定义了当前Maven项目在组中的位移的ID(相当于工程名) -->
<artifactId>hellomaven</artifactId>
<!-- packing标签:设置打包的方式 -->
<packaging>jar</packaging>
<!--
version标签:指定了当前项目的版本。1.0-SNAPSHOT。SNAPSHOT意思为快照的意思,说明该项目还处于开发中,是不稳定的版本。
-->
<version>1.0-SNAPSHOT</version>
<!-- name标签:声明了一个项目的名称 -->
<name>hellomaven</name>
</project>
2.我们来了解下maven的目录结构
3..我们就开始根据maven目录结构来创建我们一个maven项目
①创建一个HelloMaven文件加,里面包含src文件夹和pom.xml文件
例如我的:
注意:idea文件夹和hellomaven.iml文件可以不用创建,因为我用idea软件打开写代码的,所以不用管那两个文件
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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.guan.app</groupId>
<artifactId>hellomaven</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>HelloMaven</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
②在src文件夹里面创建main和test文件夹,并在他们里面创建java和resources文件夹,然后在java文件夹下创建包:com.guan.app,最后创建一个HelloWord.java文件,这个前面的报名与 <groupId>com.guan.app</groupId>相对应。
例如:
③然后我们打开cmd控制台,然后进入到当前pom文件的目录路径。
例如我的:
然我我们开始在cmd下编译项目
命令:mvn compile
看到BUILD SUCCESS代表成功了.
然后就会在HelloMaven文件夹下自动生成target目录,而且在target文件夹下的java文件夹下包下面可以看到HelloMaven.class字节码文件,可以查看一下。
使用骨架自动构建Maven项目
当我们按照手动创建项目的时候,需要自己创建文件夹,需要自己写好文件,这时候就有点麻烦,这个时候我们使用自动创建骨架可以帮我们省点事情。
①我们在桌面创建一个MyMaven文件夹
②然后我们使用cmd进入当前目录下,然后使用下面的命令
mvn archetype:generate -DgroupId=com.guan.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
然后就可以看到BUILD SUCCESS就构建成功了,这个时候MyMaven里面有完整的目录结构.
使用IDEA创建一个普通的java的Maven项目
在IDEA右侧有个Maven选项,里面继承了一些Maven的一些指令
底层都是在使用mvn命令