1、Maven是什么
Apache Maven是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建、报告和文件。
Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven按照标准的目录结构和默认构建声明周期。
在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可以重复使用,Maven让开发人员的工作更加轻松。同时创建报表、检查、构建和测试自动化设置。
通俗点说,Maven的核心功能就是合理描述项目间的依赖关系,即通过pom.xml的配置获取jar包,而不用手动去添加jar包。
Maven项目的结构和内容都在一个xml文件中声明,pol.xml项目对象模型,这是整个Maven系统的基本单元。
构建就是以我们编写的 Java 代码、框架配置文件、国际化等其他资源文件、JSP 页面和图片等静态资源作为“原材料”,去“生产”出一个可以运行的项目的过程。
那么项目构建的全过程中都包含哪些环节呢?
构建过程的几个主要环节
①清理:删除以前的编译结果(class文件),为重新编译做好准备。
②编译:将 Java 源程序编译为字节码文件。
③测试:(自动测试)针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
④报告:在每一次测试后以标准的格式记录和展示测试结果。
⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web工程对应 war 包。
⑥安装:在 Maven 环境下特指将打包的结果——jar 包或 war 包安装到本地仓库中。
⑦部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。
2、安装Maven
2.1 获取Apache Maven
打开Apache Maven下载页面下载最新的项目文件,比如我们下载目前最新版本apache-maven-3.6.1-bin.zip。
目前官网已经提供了3.6.2版本了,如下图所示
2.2 构建maven目录
在你空间比较充足的分区中建立一个maven目录,比如我在E盘中建立一个maven目录,然后在maven目录下面新建一个repository目录用于作为存储maven工具下载下来的第三方资源的仓库目录,然后将下载下来的zip文件复制到maven目录,并解压,构建完成后的目录如下图所示。
2.3 修改settings.xml配置
在apache-maven-3.6.1/conf/目录下,找到settings.xml文件,并打开它,修改配置中指向maven仓库的位置,配置位置大约在53行,我们将它的注释去掉,然后修改成自己本地仓库的位置,同时修改镜像源,配置修改如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 修改成你仓库所在位置 -->
<localRepository>E:\maven\repository</localRepository>
<pluginGroups></pluginGroups>
<proxies></proxies>
<servers></servers>
<mirrors>
<!-- 设置为阿里云仓库,加快下载速度 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>jdk18</id>
<activation>
<jdk>1.8</jdk>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
</settings>
2.4 配置环境变量
在环境变量path中加入环境变量指向E:\maven\apache-maven-3.6.1\bin,如下图所示
3、仓库的概念
通过pom.xml中的配置,就可以获取相应版本的jar包,这些jar包就来自仓库。
仓库分为本地仓库、第三方仓库(私服)、中央仓库
– 本地仓库:默认在$user.home/.m2/respository 在前面我们已经通过修改settings.xml修改了本地库位置
– 第三方仓库:又称为内部中心仓库,也称为私服
– 中央仓库:Maven内置了远程公用仓库:http://repo1.maven.org/maven2 ,这个仓库由Maven自己维护,里面有大量的常用类库,目前以Java为主
4、使用命令管理Maven项目
4.1 创建Maven的Java项目
执行下面命令行:
mvn archetype:generate -DgroupId=com.xuetang9.maven -DartifactId=mavendemo -DarchetypeArtifactId=maven-archetype-quickstart
archetype:create 创建项目,高版本的Maven已经弃用create,使用generate
-DgroupId=com.xuetang9.maven 项目的groupid
-DartifactId=mavendemo 就是项目名称
-DarchetypeArtifactId=maven-archetype-quickstart 表示创建的是MavenJava项目
注意:一定要在cmd下运行!!
注意:在命令行执行过程中需要输入如图中红框所示的内容完成创建
构建完成后我们可以看到项目的目录结构,如下图所示
4.2 Maven目录结构:
对项目进行编译后,会生成target目录,即输出目录
4.3 常用mvn命令:
mvn compile
:编译,将src/main/java目录下的Java源码编译成class(target目录下)
mvn test
:测试,将src/test/java目录编译成class
mvn clean
:清理,删除target目录
mvn package
:打包,生成压缩文件:jar包/war包,也是放在target目录下
mvn install
:安装,将压缩文件上传到本地仓库,可以供他人调用
mvn deploy
:部署/发布,将压缩文件上传到私服
4.4 Maven项目的完整生命周期
红色标记字体的意思就是当我们直接使用 mvn install命令对项目进行上传至本地仓库时,那么前面所有的步骤将会自动执行,比如源代码的编译,打包等等。
4.5 其他命令
mvn eclipse:eclipse
:将Java或Web工程转换成Eclipse工程
mvn eclipse:clean
:清除eclipse设置信息,转换成原生Maven项目
mvn idea:idea
:转换成Idea项目
mvn idea:clean
:清除idea设置信息,转换成原生Maven项目
5、Eclipse中构建Maven项目
下面我们演示如何在Eclipse中构建一个Maven Java项目。
选择菜单File->New->Other,呼叫出下面的向导窗体。
选择Next按钮
点击Next按钮
选择maven-archetype-quickstart,然后选择Next按钮
输入Group Id(包名)和Atifact Id(项目名),点击Finish按钮,等待完成项目构建完成,如下图所示
我们在pom.xml文件中加入一个依赖
<!-- 在dependencies节点中加入如下配置 -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
然后右键项目选择如下图所示的菜单
菜单选择完成后会弹出如下图所示的菜单
选择OK按钮,等待项目完成依赖jar包下载,下载成功后我们查看项目依赖项,是否包含成功,如下图所示
新建Person类
package com.xuetang9.hello_maven;
public class Person{
private String name;
private String email;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
修改App类的代码
package com.xuetang9.hello_maven;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
public class App {
public static void main( String[] args ){
//将一个Map对象转化为一个Bean
//这个Map对象的Key必须与Bean的属性相对应
Map<String,Object> map = new HashMap<>();
map.put("name","张三");
map.put("email","zhangsan@qq.com");
map.put("age","21");
Person person = new Person();
try {
//将map转化为一个Person对象
BeanUtils.populate(person,map);
System.out.println(person.getName() + ">>" + person.getAge());
} catch (Exception e) {
e.printStackTrace();
}
}
}
然后运行App类进行测试,测试成功表示,maven项目构建成功,并且完成BeansUtilities依赖包的导入
6、Idea中构建Maven项目
下面我们演示如何在Idea中构建一个Maven Java项目。
打开创建项目向导页面
选择archetype类型,为maven-archetype-quickstart
输入Group Id(包名)和Atifact Id(项目名),点击Next按钮
确认并设置本地之前安装的maven路径,点击Next
点击Finish,等待完成项目构建完成,如下图所示
我们在pom.xml文件中加入一个依赖
<!-- 在dependencies节点中加入如下配置 -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
选择右下角提示框中“Import Changes”,完成第三方jar导入,导入完成后,查看依赖项导入结果
然后加入上面所示的java代码,运行测试,如果测试成功表示,maven项目构建成功,并且完成BeansUtilities依赖包的导入