Appearance
Maven
Maven简介
项目开发中的问题
- jar 包冗余
- 版本冲突
- 依赖管理困难
Maven概述
Maven定义
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
Maven的作用
- 依赖管理
Maven能够帮我们统一管理项目开发中需要的jar包
- 插件管理
Maven能够帮我们统一管理项目开发过程中需要的插件
Maven相关概念
POM【了解】
概念:Project Object Model 项目对象模型,按照面向对象的思想来管理项目,把整个项目抽象成一种对象。项目中的元素就是它的属性。可以在一个 pom.xml 配置文件中管理我们的项目。
- 项目本身的信息
- 当前项目打包的类型
- 当前项目的依赖
Maven坐标【掌握】
用于明确指定依赖的 jar 包
groupId
- com.future-weaver
- 组织id
artifactId
- a.sample
- 项目id
version
版本号
项目或模块的版本号。其中常见的两种后缀:
Alpha
测试版本
Beta
测试版本
SNAPSHOT
快照版本
RELEASE
释放版本 - 稳定版
FINAL
释放版本 - 稳定版
小结
POM
Project Object Model - 按照面向对象的思想来管理项目
坐标
- groupId
组织id,一般是官网的倒写
- artifactId
工件id
项目id
- version
版本号
稳定版:
- 一个字母都没有
- RELEASE
- FINAL
Maven仓库【重点】
本地仓库
本地仓库就是一个目录,这个目录被用来存储项目的所有依赖(jar 包),本地仓库供电脑上所有项目使用,Maven 所有的 jar 包都是从中央仓库下载
远程仓库
中央仓库
http://repo1.maven.org/maven2/
http://repo2.maven.org/maven2/
http://central.maven.org/maven2/
第三方仓库
建议查找依赖时使用
http://maven.aliyun.com/nexus/content/groups/public/
私服
在公司内部架设jar包的私有服务器,中央仓库中存放的是通用的jar包。公司自己开发的jar包可以放在公司内部的私服中供企业内部使用,私服仓库中也包含了大量中央仓库的jar包。访问私服仓库比访问中央仓库速度更快,更稳定。
私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。
小结
POM
项目对象模型
Maven 坐标【重点】
- 组织id
- 项目id
- 版本号
Maven 仓库
- 本地仓库
- 远程仓库
- 中央仓库
- 第三方仓库
- 私服
Maven入门
目标
- 了解Maven的安装、配置、集成
- 掌握Maven的基本使用
Maven的下载与安装【了解】
下载
tex
官方网站:http://maven.apache.org/
下载页面:http://maven.apache.org/download.cgi
安装
- 将压缩包解压至无特殊字符的文件夹内
Maven目录介绍【了解】
bin
脚本目录,mvn.cmd是maven的核心可执行文件
boot
第三方类加载器插件,类似于ClassLoader,用来加载类
conf
配置目录,其中的settings.xml是用于配置本地仓库的核心配置文件
lib
依赖的jar包
Maven环境变量配置【了解】
- MAVEN_HOME
- Path
- 计算机右键-属性
- 高级系统设置
- 环境变量
- 新建环境变量 MAVEN_HOME
- 保存环境变量 - MAVEN_HOME
- 编辑 Path 变量 - 新建 - 指定 MAVEN 的 bin 目录
Maven配置【了解】
以下三项配置,都需要编辑 Maven 的核心配置文件,即%MAVEN_HOME%\conf\settings.xml
。
本地仓库配置
xml
<settings>
<!-- 1. 在settings标签下,新建localRepository标签 -->
<!-- 2. 在localRepository标签体中,指定本地仓库所在的磁盘位置 -->
<!-- 3. 本地仓库默认位置为${user.home}/.m2/repository -->
<!-- 4. ${user.home}为当前用户的文件夹,建议使用 -->
<localRepository>C:\soft\m2\repository</localRepository>
</settings>
远程仓库配置
远程仓库的配置,可将两个地址,同时写入 settings.xml。当遇到网络环境切换时,利用 xml 注释<!-- XML Comment -->
进行切换
阿里云私服
外网环境使用
xml
<settings>
<!-- ... -->
<mirrors>
<!-- 1. 找到mirrors标签,新建mirror标签 -->
<!-- 2. 在mirror标签中,指定远程仓库所在位置 -->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus Aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
</settings>
默认JDK版本配置【超纲】
默认情况下,Maven 创建项目使用的 JDK 版本为 1.5。虽不影响使用,但编译项目时会报警告,建议配置默认 JDK 版本。
xml
<settings>
<!-- ... -->
<profiles>
<!-- 1. 找到profiles标签,新建profile标签 -->
<!-- 2. 在profile标签中,指定JDK版本 -->
<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>
<!-- 编译时的编码 -->
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<!-- 文件拷贝时的编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
</profile>
</profiles>
</settings>
IDEA集成【重点】
配置本地Maven
- 打开 default settings
- 配置 MAVEN_HOME 和 settings.xml 的路径
配置默认仓库
使用 IDEA 创建 Maven 项目后,默认会去网络中下载一些配置资源。需要设置参数 archetypeCatalog。设置方法如下:将-DarchetypeCatalog=internal 设置到 Maven--Runner--VM Options 中。
tex
参数:-DarchetypeCatalog=internal
配置字符编码
tex
-Dfile.encoding=GBK
或:
tex
-Dfile.encoding=UTF-8
创建Java工程【重点】
使用 Maven 创建的项目可分为 3 种类型:普通java项目,web项目和maven的父工程。 这三种项目对象的打包方式分别是:jar,war 和 pom。本课程只涉及到普通的 java 项目和 web 项目的创建。
创建步骤
- File -> New -> Project
- 选择 Maven,下一步
- 填写项目的坐标信息
- 指定项目名称和路径
IDEA会把项目名中的
-
去掉,添加上即可。
Java工程目录介绍
src
main
java
编写java代码的目录
resources
存放配置文件的目录
test
java
编写java测试代码的目录
resources
存储独立于测试环境的配置文件
pom.xml
测试
在 java 目录下创建包:com.futureweaver.maven。然后,创建一个 java 类 MavenTest,编写以下代码进行测试:
java
package com.futureweaver.maven;
public class MavenTest {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
运行程序:点击 main 方法左侧的绿色小三角,点击图标1 或者图标2 运行程序:
运行结果:如果控制台上能够正常打印如下信息,则说明工程创建没问题:
创建Web工程【重点】
利用骨架(向导)创建Web工程
- pom.xml
xml
<?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.future-weaver</groupId>
<artifactId>maven-archtype-web</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>maven-archtype-web Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 以下的配置信息,是maven的插件信息,可以直接删除掉 -->
<build>
<finalName>maven-archtype-web</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
- 手动完善 JavaWeb 的目录结构
- src
- main
- java
- resources
- webapp
- WEB-INF
- web.xml
- WEB-INF
- test
- java
- resources
- main
- src
手动创建Web工程
- 创建普通 java 项目
参照创建 maven 的 java 项目步骤进行创建。
- 配置打包方式
Web 项目的打包方式为 war,打开 Maven 项目的 pom 文件。在项目的坐标信息下添加<packaging>
标签,设置打包方式。
【import Changes】
- 配置 pom.xml 属性
xml
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
配置 webapp 目录和 web.xml
- 打开
Project Structure
视图
- 新增 web.xml 文件
按照数字图标的顺序操作
- 设置 web.xml 的路径
点击web.xml后会自动弹出一个窗口设置路径
- 点击 Applay,OK
- 创建完成
设置完成之后,main目录下会创建
webapp
-WEB-INF
-web.xml
- 打开
JavaWeb工程目录介绍
src
main
java
编写java代码的目录
resources
存放配置文件的目录
webapp
用于存储web资源(jsp、html、js、css)的目录
WEB-INF
- web.xml
test
java
编写java测试代码的目录
resources
存储独立于测试环境的配置文件
pom.xml
发布web项目
- Edit Configurations
- 添加 Local Tomcat
- 配置 Tomcat
- 启动测试
在 webapp 目录下新建 hello.html 文件
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试</title>
</head>
<body>
<h1>Hello Maven!</h1>
</body>
</html>
启动Tomcat后,访问hello.html。如果能正确访问到hello.html。说明项目创建成功。
Maven深入
目标
- 掌握POM文件的编写规则
- 了解Maven生命周期的概念;掌握生命周期各命令的含义
pom配置详解【重点】
pom(Project Object Model)指的是项目对象模型,用来描述当前的 maven 项目。使用 pom.xml 文件来实现。
补充
setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件;而pom.xml主要描述了项目的Maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项目相关因素,是项目级别的配置文件。
pom.xml
xml<?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.future-weaver.maven</groupId> <artifactId>maven-web2</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> </project>
pom文件详解
<project>
pom文件的根节点
<modelVersion>
声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,目前POM模型版本是4.0.0
<groupId>
项目组织标识符,一般是公司域名倒过来写
<artifactId>
项目标识符,即项目名
<version>
项目的版本号
<packaging>
maven项目的打包方式一般配置jar或者war
依赖导入【重点】
Maven 的一个核心的作用就是管理项目的依赖,引入我们所需的各种 jar 包等。为了能自动化的解析任何一个 Java 构件,Maven 必须将这些 Jar 包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们要说的坐标。包括我们自己开发的项目,也是要通过坐标进行唯一标识的,这样才能才其它项目中进行依赖引用。
使用IDEA工具导入
直接在 pom.xml 中,新建Dependency
标签,填入artifactId
,Idea 会自动联想
注意,能够自动联想的前提:
- 本地仓库已经存在的依赖(将资料中的 repository.zip 解压,存放至磁盘,并指定本地仓库)
- 依赖索引能够正常更新(参考《第六部分,附三》)
从远程仓库中获取坐标
如果我们导入的依赖本地仓库中没有,使用 IDEA 搜索就搜索不到了,我们需要从网络中查找这个依赖的坐标,然后将其添加到 pom 文件中。添加完成之后,maven 会帮我们从私服或中央仓库中下载该依赖。
搜索依赖坐标的方法:
在中央仓库中查找:http://mvnrepository.com/
将以下坐标复制到 pom 文件中即可:
pom 文件中引入依赖后,会去私服或者中央仓库中下载依赖:如果项目结构的 External Librarites 中出现刚引入的依赖,则说明依赖引入成功。
小结
如果本地仓库当中有的话,那么直接写 artifactId,Idea 会自动联想,包括 groupId 和 version 也会自动联想
xml<dependencies> <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> </dependency> </dependencies>
如果本地仓库当中没有的话,需要从网站当中进行查询
mvnrepository.com
Maven插件【了解】
pom.xml
xml<project ...> <build> <plugins> <!-- 直接在project标签里面编写一个build标签,里面再编写plugins标签,然后再插件粘贴到plugins标签里面 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8080</port> <path>/</path> </configuration> </plugin> </plugins> </build> </project>
打开Maven视图
依次打开 View
-> Tool Windows
-> Maven Projects
打开 IDEA 编辑区右侧Maven Projects
,会弹出如下窗口,打开窗口中的 Lifecycle 即可看到相关命令。
Maven官方插件
Maven 官方有两个插件列表
tex
第一个列表的GroupId为org.apache.maven.plugins,这里的插件最为成熟,具体地址为:http://maven.apache.org/plugins/index.html。
第二个列表的GroupId为org.codehaus.mojo,这里的插件没有那么核心,但也有不少十分有用,其地址为:http://mojo.codehaus.org/plugins.html。
Tomcat插件
- 配置 Tomcat7 插件
xml
<!-- Tomcat7插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/</path>
</configuration>
</plugin>
- 在 Maven 菜单窗口,以 Tomcat 插件方式,运行项目
Maven生命周期【重点】
项目从开发的开始到项目的开发结束的整个过程
mvn clean
清除,删除target目录
mvn test
运行所有的单元测试
注意:
- 要测度的是哪一个类,它所对应的单元测试的名字,后边加一个'Test'后缀
- 要测试的是哪一个方法,方法名首字母变大写,前缀加上'test'
- 单元测试的代码,包名与被测试类的包名一致
比如:
类名叫做
HelloServlet
,方法名叫做doGet
和doPost
那么,单元测试的类名叫做
HelloServletTest
所对应的单元测试方法叫做
testDoGet
和testDoPost
mvn compile
生成target目录
mvn package
打包,打包方式取决于pom.xml当中的
<packaging>
选项
mvn install【安装到本地仓库当中】
安装,将打包好的文件,安装到本地仓库当中
将 ValidateCode.jar 安装到本地仓库
bashmvn install:install-file -DgroupId=cn.dsna.util.images -DartifactId=ValidateCode -Dversion=1.0 -Dfile=ValidateCode.jar -Dpackaging=jar -DgeneratePom=true
mvn site【了解】
生成项目站点文档
mvn deploy【了解】【安装到远程仓库当中】
将最终的包复制到远程仓库,供其他开发人员或maven项目使用
小结
clean
删除target目录
test
运行项目当中的所有单元测试
注意:
- 类名后缀Test
- 测试方法前缀test
compile
生成target目录,把java程序编译成class字节码文件
package
打包-先编译再测试最后打包
install
安装 到本地仓库-先编译再测试再打包最后安装
Maven依赖范围【难点】
三种不同的类路径
常用依赖范围
provided依赖范围
test依赖范围
runtime依赖范围
依赖范围 | 说明 | 编译classpath | 测试classpath | 运行时classpath |
---|---|---|---|---|
compile | 默认的范围,编译、测试、运行都有效 | Y | Y | Y |
provided 【重点】 | 编译、测试时有效,运行的时候不会被加入 | Y | Y | - |
runtime 【了解】 | 在测试、运行时有效 | - | Y | Y |
test 【掌握】 | 只在测试时有效 | - | Y | - |
system
系统依赖范围。该依赖与 provided 依赖范围完全一致。但是,使用 system 范围的依赖时必须通过 systemPath 元素显式地指定依赖文件的路径。由于此依赖不是通过 Maven 仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植,因此应该谨慎使用。systemPath 元素可以引用环境变量。
例如:oracle 的驱动包,从中央仓库无法下载,需要先下载到本地,再通过本地路径引入。先下载 orace 的包到本地:
然后在 pom 文件中导入依赖:
xml
<dependency>
<groupId>oracle</groupId>
<artifactId>ojdbc</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>D:/software/maven/apache-maven-3.5.2/repository/ojdbc6.jar</systemPath>
</dependency>
依赖范围配置
xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.9.RELEASE</version>
<!--compile是默认的依赖范围,可以不用写出来-->
<scope>compile</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.2.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>oracle</groupId>
<artifactId>ojdbc</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>D:/software/maven/apache-maven-3.5.2/repository/ojdbc6.jar</systemPath>
</dependency>
依赖版本统一维护【了解】
如果 pom 文件中引入的依赖太多,各种依赖又有不同的版本,为了统一维护版本。我们可以将依赖的版本号抽取出来进行统一管理。抽取方法如下:
第一步 :在 pom.xml 中使用<propeties>
属性定义 jar 包的版本
xml
<properties>
<spring.version>4.2.4.RELEASE</spring.version>
<struts.version>2.3.8</struts.version>
</properties>
第二步 :在依赖的<version>
中使用${}
引入前面定义好的版本
xml
<properties>
<spring.version>4.2.4.RELEASE</spring.version>
<struts.version>2.3.8</struts.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts.version}</version>
</dependency>
</dependencies>
小结
Maven 坐标
Maven 仓库
依赖导入
生命周期
Maven 依赖范围
综合练习
需求:将《企业通讯录管理系统》改成 maven 的 web 项目
要求:配置本地 tomcat 启动
创建maven的web项目
- 创建 maven 的 web 项目,并配置 webapp 和
web.xml
;
- 修改 pom 文件中打包方式为 war;
复制用户管理系统代码到本项目
- 复制静态页面到 webapp 目录下
复制 java 代码到
src/main/java
目录中:将原项目 src 目录下的配置文件全部复制到 maven 项目的 resources 目录中
对照原项目jar包导入依赖
xml
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>6.0.4</version>
</dependency>
给依赖添加作用域
- junit: test
- servlet: provided;
- mysql 驱动: runtime;
配置Tomcat启动
配置编译插件
配置编译插件
xml
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
Idea模板
- 进入 Idea 欢迎页面(如果已开启某个项目,点击菜单栏-File-Close Project)
- 左侧导航栏,选择
Customize
,选择All Settings...
- 左侧导航栏,选择
Editor
->File And Code Templates
- 右侧视图,选择
Other
选项卡 - 右侧窗口中的左侧导航栏,选择
Maven
->Maven Project.xml
- 下拉到底部,将以下文本,CV 到
</project>
上侧
xml
<?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>
#if (${HAS_PARENT})
<parent>
<groupId>${PARENT_GROUP_ID}</groupId>
<artifactId>${PARENT_ARTIFACT_ID}</artifactId>
<version>${PARENT_VERSION}</version>
#if (${HAS_RELATIVE_PATH})
<relativePath>${PARENT_RELATIVE_PATH}</relativePath>
#end
</parent>
#end
<groupId>${GROUP_ID}</groupId>
<artifactId>${ARTIFACT_ID}</artifactId>
<version>${VERSION}</version>
<dependencies>
${END}
<!-- junit -->
<!-- c3p0 -->
<!-- druid -->
<!-- spring-jdbc -->
<!-- commons-beanutils -->
<!-- commons-io -->
<!-- fastjson -->
<!-- jackson-databind -->
<!-- jakarta.servlet-api -->
<!-- mysql-connector-j -->
<!-- jakarta.servlet.jsp.jstl-api -->
<!-- jakarta.servlet.jsp.jstl -->
</dependencies>
</project>
学习目标总结
- 能够独立安装和配置 maven
- 能够解释 maven 仓库
- 会使用 maven 构建项目的生命周期
- 能够描述 maven 的生命周期
- 能够在 maven 工程中添加依赖
附一 清理maven仓库
初始情况下,我们的本地仓库是没有任何 jar 包的,此时会从远程仓库去下载(如果没有配置,就直接从中央仓库去下载),可能由于网络的原因,jar 包下载不完全,这些不完整的 jar 包都是以 lastUpdated 结尾。此时,maven 不会再重新帮你下载,需要你删除这些以 lastUpdated 结尾的文件。如果本地仓库中有很多这样的以 lastUpadted 结尾的文件,可以执行如下脚本来删除
- Windows
bash
set REPOSITORY_PATH=G:\maven\apache-maven-3.5.2\repository
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
del /s /q %%i
)
rem 搜索完毕
pause
- Unix
bash
find /app/maven/localRepository -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;
附二 更新依赖索引
有时候给 idea 配置完 maven 仓库信息后,在 idea 中依然搜索不到仓库中的 jar 包。这是因为仓库中的 jar 包索引尚未更新到 idea 中。这个时候我们就需要更新 idea 中 maven 的索引了,具体做法如下:
打开设置----搜索 maven----Repositories----选中本地仓库-----点击 Update