01. Maven简介

Maven简介

Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。

在多个开发团队一起工作时,Maven可以按照标准设置在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可以重复使用,Maven让开发人员的工作更轻松,同事创建报表、检查、构建和测试自动化设置。

Maven提供的管理有:

  • Builds
  • Documentation
  • Reporting
  • Dependecies
  • SCMs
  • Release
  • Distribution
  • mailing list

Maven简化和标准化项目的建设过程。处理编译、分配、文档、团队协作和其他任务的无缝连接。Maven增加可重用性并建立相关性任务。

标准化的目录结构:Maven的项目目录结构是固定的,和具体的开发环境无关(eclipse和idea有自己的默认项目目录结构)。

Maven安装

在Windows安装时,需要下载Maven的zip文件,并解压到想要的目录中。

安装要求

必须配置好JavaSDK的路径,和Java_HOME环境变量。

在Path中添加Maven的bin目录。

Maven配置

配置文件

Maven的默认配置文件在Maven目录下的conf/settings.xml,参照该文件可以定制、修改Maven的配置。把自定义好的settings.xml文件拷贝到用户\administrator\.m2\目录下,idea会自动检测配置文件的变化,加载Maven配置。

  • idea中可以修改settings.xml的保存位置,而不是必须在用户\administrator\.m2\目录下。

本地仓库

本地仓库的作用是保持Maven下载的依赖包。

配置文件中的<localRepository>/path/to/local/repo</localRepository>,中的路径就是手动设置的本地仓库路径,如果不设置,默认是在用户\administrator.m2\repository\目录。

  • idea中可以修改本地仓库的保存位置,而不是必须在用户\administrator\.m2\repository\目录下。

中央仓库

当建立Maven项目时,Maven会检查项目的pom.xml文件,以确定下载哪些依赖。首先,Maven从本地仓库查找资源,如果没有找到,就会从默认的Maven在线中央仓库下载。

设置仓库源

在配置文件中,可以修改中央仓库的源,从而加快依赖包的下载速度。配置如下:

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

settings节点是配置文件的根节点

设置Maven项目默认的编译环境

<profile>  
     <id>jdk-12</id>  
     <activation>  
         <activeByDefault>true</activeByDefault>  
         <jdk>12</jdk>  
     </activation>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>12</maven.compiler.source>  
         <maven.compiler.target>12</maven.compiler.target>   
     </properties>   
</profile>

添加包依赖

首先,在Maven在线仓库查找需要的包。然后把包信息添加pom.xml文件中,如下:

<dependecies>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifectId>
        <version>1.2.17</version>
    </dependency>
</dependecies>

Maven POM

POM是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.bailiang</groupId>
    <artifactId>hello-maven</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>war</packaging>

</project>
说明

节点 | 描述
-|-
groupId | 项目组的编号,在组织或项目中通常是唯一的,和Java包名命名规则相同
artifactId | 项目的编号,通常是项目名称。定义了artifact在存储库中的位置
version | 项目的版本号
packaging | 项目发布时的打包方式,war或jar

说明
  • 快照版:必须使用 X.Y.Z-SNAPSHOT的格式,如果依赖的是快照版,则刷新Maven时,会自动下载最新的代码;如果没有-SNAPSHOT,而是任何其他字符,都是发行版,发行版需要手动修改版本号来加载最新代码。
  • 语义化版本规范: a.b.c
    c 每修复一个bug,数值增1
    b 功能每增加、删除、修改一个,数值增1
    a 工程的架构发生重大变化,比如核心库更换、核心功能重写等,数值增1
  • 如果想要快照版自动更新最新代码,必须设置Maven的Always update snapshots,如下图

通用目录结构
{myproject}
---->[src]
    |--->[main]
        |--->[java] 存放所有源码
        |--->[resources] 存放资源文件,如xml配置文件
        |--->[webapp] 存放web文件,如jsp
    |--->[test]
        |--->[java] 测试
---->pom.xml Maven项目配置文件
web项目的目录结构
{myproject}
---->[src]
    |--->[main]
        |--->[java] 存放所有源码
            |--->各个package
        |--->[resources] 存放资源文件,如xml配置文件
            |--->spring-context.xml 
            |--->spring-mvc.xml
            |--->其他配置文件
        |--->[webapp] 存放web文件,如jsp
            |--->[WEB-INF]
                |--->web.xml web配置文件
            |--->index.jsp 首页
    |--->[test]
        |--->[java] 测试
---->pom.xml Maven项目配置文件
常用命令

如果PC中没有开发环境,也可以用Maven的命令行打包发布工程
命令行:mvn cmd

  • clean 清理项目
  • package 打包项目(包含编译过程)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值