Maven

Maven

Maven是一款Java项目构建管理、依赖管理的工具

在学习前端工程化时,我们接触到了npm&node.js,maven就相当于后端的项目管理,依赖管理的软件

同样的,Maven也有两个核心功能:

  • 依赖管理
  • 构建管理

构建这个词对于我们来说并不陌生,但不同的平台中,项目结构并不相同

比如idea和eclipse的项目结构就不同

为了解决这个问题,我们使用Maven来构建项目,让idea就作为编辑器使用,就可以解决项目结构不同的问题


Maven的安装

Maven – Download Apache Maven

注:Maven3.9.x需要JDK8以上的支持

Maven在解压完成后,同样需要配置环境变量Maven_HOME 和 PATH


Maven的配置

在安装Maven之后,我们需要修改Maven的配置文件的以下三项:

  • 依赖本地缓存位置
  • Maven下载镜像
  • Maven选用编译项目的JDK版本

在学习过Node.js之后,这些知识点的掌握则不在困难

配置文件地址: maven/conf/settings.xml


依赖本地缓存位置

maven的默认依赖缓存位置时用户文件夹下的.m2文件夹中

我们可以通过修改配置文件实现修改缓存地址

在大概50行中的localRepository

<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:\.m2\repository</localRepository>

配置阿里镜像

和npm相同,maven的中央仓库同样在国外,我们可以修改为阿里的仓库

在大概160行中的mirrors标签中

<mirrors>
    ……
    <mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
    ……
</mirrors>

配置JDK编译版本

在大概200行左右的profiles的标签中

<profiles>
    ……
    <profile>
        <id>jdk-17</id>
        <activation>
          <activeByDefault>true</activeByDefault>
          <jdk>17</jdk>
        </activation>
        <properties>
          <maven.compiler.source>17</maven.compiler.source>
          <maven.compiler.target>17</maven.compiler.target>
          <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
        </properties>
    </profile>
    ……
</profiles>

idea

在idea中,他自带了最新版本的Maven,我们可以通过修改设置的方式配置成自己的Maven

设置 -> 构建、执行、部署 -> 构建工具 -> Maven -> Maven主路径

GAVP

Maven工程会多出一组gavp属性,gav需要我们在创建项目时指定,p有默认值,后期可以通过配置文件修改

gav是用来标识项目,类似人的姓、名组成的方式

  • GroupID:com.公司名.业务线.子业务线 例如:com.xiaobai.java,一般不超过四级
  • ArtifactID:产品线名 例如:top-news
  • Version:版本号
    • 主版本号:当做了不兼容的API修改,或者增加了改变产品方向的新功能
    • 次版本号:当做了向下兼容的功能性新增
    • 修订号:修复bug,没有修改方法签名的功能加强,保持API兼容性
  • Packaging:项目的包格式
    • jar:默认值,代表普通的Java工程
    • war:代表Java的web工程
    • pom:代表不会打包,用来做继承的父工程

artifact中文释义:人工制品,手工艺品


pom.xml

在新建好Maven项目之后,项目中会存在src文件夹和pom.xml文件

这个文件就是对Maven的配置文件

<?xml version="1.0" encoding="UTF-8"?>

<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.xiaobai</groupId>
    <artifactId>maven-javaee-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>

JavaWeb项目

我们可以通过手动的方式去创建maven工程下的JavaWeb项目

  • 建立项目结构

src -> main -> webapp -> WEB-INF -> web.xml

  • 在pom.xml中改变打包类型为war
<packaging>war</packaging>

刷新maven工程之后,当webapp的图标上出现小蓝点即完成创建

JBLJavaToWeb

使用此插件可快速创建maven工程下的JavaWeb项目


Maven项目结构

Project Object Model 项目对象模型

  • pom.xml:maven的配置文件
  • src:项目的源文件
    • main:程序的主代码
      • java:java源代码
      • resources:存放项目资源文件
      • webapp:存放web相关配置和资源
    • test:项目的测试代码
      • java:单元测试目录
      • 测试资源目录

maven工程的JavaWeb其实和普通项目的JavaWeb项目结构大同小异,在使用中并没有很大的区别