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

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

相关推荐
羊锦磊39 分钟前
[ Mybatis 多表关联查询 ] resultMap
java·开发语言·数据库·mysql·mybatis
ZeroToOneDev3 小时前
Java(泛型和JUnit)
java·开发语言·笔记
迪尔~5 小时前
Apache POI中通过WorkBook写入图片后出现导出PDF文件时在不同页重复写入该图片问题,如何在通过sheet获取绘图对象清除该图片
java·pdf·excel
现在,此刻5 小时前
leetcode 11. 盛最多水的容器 -java
java·算法·leetcode
DKPT6 小时前
Java设计模式之开闭原则介绍与说明
java·设计模式·开闭原则
hyy27952276846 小时前
企业级WEB应用服务器TOMCAT
java·前端·tomcat
布朗克1686 小时前
Spring Boot项目通过Feign调用三方接口的详细教程
java·spring boot·feign
Arva .6 小时前
Spring基于XML的自动装配
xml·java·spring
帅得不敢出门8 小时前
Android Framework定制长按电源键关机的窗口
android·java·framework
fatfishccc8 小时前
循序渐进学 Spring (上):从 IoC/DI 核心原理到 XML 配置实战
xml·java·数据库·spring·intellij-idea·ioc·di