Javaweb开发——maven

一、概述

介绍: Apache Maven是- -个项目管理和构建工具,它基于项目对象模型

(POM Project Object Model)的概念,通过一小段描述信息来管理项目的构建。

作用:

➢方便的依赖管理

➢统一的项目结构

➢标准的项目构建流程

官网: Maven -- Welcome to Apache Maven

仓库: 用于存储资源,管理各种jar包。

➢本地仓库:自己计算机上的-一个目录。(在安装的时候可以选择)

➢中央仓库: 由Maven团队维护的全球唯一的。

➢中央仓库地址: https://repo1.maven.org/maven2/

➢远程仓库(私服): 一般由公司团队搭建的私有仓库。

➢查找顺序:现在本地找,本地没有去远程仓库找,远程没有才会去中央仓库找

安装步骤: (大多数情况下都不会去本地安装)

第一步:下载maven,下载地址:Maven -- Download Apache Maven

第二步:配置本地仓库:修改conf/settings.xml中的<localRepository>为一个指定目录。

<localRepository>D:\develop\apache-maven-3.6.1\mvn_ repo</localRepository>

第三步:配置阿里云私服:

修改conf/settings.xml中的<mirrors>标签,为其添加如下子标签:

XML 复制代码
 <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url> http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
  </mirror>

第四步:配置环境变量: MAVEN_ HOME为maven的解压目录,并将其bin目录加

入PATH环境变量。

① 复制maven的安装目录,在此电脑上右键→属性→高级系统设置→环境变量→系统

变量下新建 ,输入变量名和安装目录确定

② 接着向下拉系统变量,选择path→新建→%MAVEN_HOME%\bin

二、idea集成

新建项目project的配置

1.配置Maven环境

选择IDEA中File --> Settings --> Build,Execution,Deployment --> Build Tools --> Maven

设置IDEA使用本地安装的Maven,并修改配置文件及本地仓库路径

打开maven选择Runner设置JRE

选择Compiler下的Java Compiler 去设置

上面是根据项目进行配置,下面是全局配置的方法

idea中选择File--> Close Project --> Customize --> All setting

之后的操作步骤单个项目的配置是一样的

2.创建Maven项目

① 创建模块,选择Maven,'"点击Next

点击File --> New --> Module
② 填写模块名称,坐标信息,点击finish, 创建完成

finish之后,等待maven的下载,完成之后配置文件是pom.xml


③ 编写HelloWorld,并运行

Maven项目的工程结构,text下没有resources文件夹,是因为这个文件夹在Text中不常用,

所以Maven没有创建,可以text文件夹上手动右键创建一个文件夹,会直接有提示

当我们新建一个个类并且运行起来,会发现项目目录结构够多了一个target文件夹,

这个文件夹中存放的是自编码类

Maven坐标

Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置

使用坐标来定义项目或引入项目中需要的依赖。

Maven坐标的主要组成

**groupId:**定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.baidu)

**artifactId:**定义当前Maven项目名称(通常是模块名,例如:order-service)

**version:**定义当前项目版本号

XML 复制代码
<groupld>com.XXXa</groupld>
<artifactld>maven-project</ artifactld>
<version>1.0-SNAPSHOT</version>
<!--项目依赖-->
<dependency>
    <groupld>ch.qos.logback</groupld>
    <artifactld>logback-classic</ artifactld>
    <version>1.2.3</version>
</dependency>

3.导入Maven项目

**方式一:**打开IDEA,选择右侧Maven面板,,点击+号,选中对应项目的pom.xml文件,双击即可。

如果右侧没有maven面板就按照下面的方式调出来

**方式二:**打开IDEA,选择右侧Maven面板,点击+号,选中对应项目的pom.xml文件,双击即可。

三、依赖管理

1.依赖配置

**依赖:**指当前项目运行所需要的jar包,一个项目中可以引入多个依赖

配置:

1> 在 pom.xml中编写<dependencies>标签

2> 在<dependencies>标签中 使用<dependency>引入坐标

3> 定义坐标的 groupld,artifactld,version

XML 复制代码
<dependencies>
    <dependency>
        <groupld>ch.qos.logback</groupld>
        <artifactld>logback-classic</artifactld>
        <version>1.2.3</version>
    </dependency>
</dependencies>

4> 点击刷新按钮,引入最新加入的坐标

注意:

① 如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖。

(这个过程会比较耗时,耐心等待)

② 如果不知道依赖的坐标信息,可以到https://mvnrepository.com/中搜索。

2.依赖传递

依赖具有传递性:

直接依赖: 在当前项目中通过依赖配置建立的依赖关系

**间接依赖:**被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

排除依赖:

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。

XML 复制代码
<dependency>
    <groupId>com.cccc</groupId>
    <artifactId>maven-projectB</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 排除依赖,不需要制定版本-->
    <exclusions>
        <exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3.依赖范围

依赖的jar包,默认情况下,可以在项目的任何地方使用。

作用范围:

主程序范围有效。(main文件夹范围内)

测试程序范围有效。(test文件夹范围内)

是否参与打包运行。(package指令范围内)

可以通过<scope>...</scope>设置其作用范围:

compile(默认): 主程序、测试程序、打包(运行),例如:log4j

test: 测试程序,例如:junit

provided: 主程序、测试程序,例如:servlet-api

runtime: 测试程序、打包(运行),例如:jdbc驱动

4.生命周期

Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统

Maven中有3套相互独立的生命周期

clean: 清理工作。
主要阶段: clean 移除上一次构建生成的文件

default: 核心工作,如:编译、测试、打包、安装、部署等。

主要阶段:compile 编译项目源代码

test 使用合适的单元测试框架运行测试(junit)

package 将编译后的文件打包,如:jar、war等

install 安装项目到本地仓库

**site:**生成报告、发布站点等。 (这一生命周期很少用到)

Maven的包中已经加载了这些主要的阶段

注意: 在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行。想要跳过某个阶段可以

选中某个阶段然后点击右侧上面的蓝色闪电图标,如下图:

执行指定生命周期的两种方式:

在idea中,右侧的maven工具栏,选中对应的生命周期,双击执行。(常用)

在命令行中,通过命令执行mvn clean、 mvn compile、mvn compile、mvn package、mvn test

注意:要在项目文件夹中执行

相关推荐
suweijie7683 小时前
SpringCloudAlibaba | Sentinel从基础到进阶
java·大数据·sentinel
公贵买其鹿4 小时前
List深拷贝后,数据还是被串改
java
xlsw_7 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
神仙别闹8 小时前
基于java的改良版超级玛丽小游戏
java
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭8 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
暮湫8 小时前
泛型(2)
java
超爱吃士力架8 小时前
邀请逻辑
java·linux·后端
南宫生8 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
转码的小石8 小时前
12/21java基础
java
李小白669 小时前
Spring MVC(上)
java·spring·mvc