文章目录
Maven
-
服务于 Java 平台的自动化构建工具
-
构建:以 Java 源文件、框架配置文件、jsp、HTML、图片等资源作为”原材料“生产可以运行的项目的过程
-
编译:
.java
→.class
,虚拟机进行 -
部署:B/S 项目运行的是动态 Web 工程编译后的结果
-
作用
- 拆分项目进行模块管理
- 利用
Maven
将jar
包保存在项目仓库- 根据需求引用文件接口
- 无需复制
jar
包到项目目录
- 以规范的方式下载
jar
包- 所有知名框架或三方工具
jar
包都已经按照统一规范存放在Maven
的中央仓库
- 所有知名框架或三方工具
- 管理
jar
包依赖- 自动将被依赖的
jar
包导入 - 管理
jar
包版本
- 自动将被依赖的
- 编译程序:.
java
文件 →.class
文件 - 测试代码是否正确
Maven
测试模块
- 打包程序
- 项目打包为
jar
包、war
包
- 项目打包为
- 部署项目
- 部署项目到服务器,一般不使用
Maven
进行
- 部署项目到服务器,一般不使用
-
运行时环境
-
一组 jar 包的引用,并未把 jar 包本身复制到工程中
- 例如:JRE
-
不会在目录中出现
-
安装
-
安装Maven核心程序步骤
- 检查
JAVA_HOME
环境变量Maven
使用 Java 编写,运行需要 Java 环境
- 解压 Maven 核心程序压缩包
- 路径尽量不含中文、空格,防止不必要意外
bin
目录存放执行程序conf
目录存放Maven
配置文件
- 路径尽量不含中文、空格,防止不必要意外
- 配置 Maven 相关环境变量
- 创建
MAVEN_HOME
或M2_HOME
环境变量- 路径值只到到
bin
目录上级
- 路径值只到到
- 系统
path
变量添加值%MAVEN_HOME%\bin
cmd
窗口运行mvn -v
命令查看Maven
版本
- 创建
- 检查
构建
-
Maven 负责项目的自动化构建
- 自动进行编译必须知道 Java 源文件保存结构
-
构建的具体环节
- 清理
- 删除以前编译得到的
class
字节码文件,为下一次编译做准备
- 删除以前编译得到的
- 编译
- 将 Java 流程序编译为
.class
文件 - 批量编译,同时执行
- 将 Java 流程序编译为
- 测试
- 自动测试,自动调用
junit
程序 - 批量执行
- 自动测试,自动调用
- 报告
- 测试程序执行的结果
- 打包
- 生成压缩文件
- 动态 Web 工程打
war
包 - 普通 Java 工程打
jar
包
- 动态 Web 工程打
- 生成压缩文件
- 安装
- Maven 特定的概念
- 将打包得到的文件复制到仓库指定位置
- 部署
- 将动态 Web 工程生成的
war
包复制到Servlet
容器指定目录下,使其可以运行
- 将动态 Web 工程生成的
- 清理
目录结构
-
自定义文件被其他 maven 工程引用
-
通过配置方式明确告诉
<param-value>classpath:spring-context.xml</param-value>
-
遵守框架内已经存在的约定
- log4j.properties
- log4j.xml
-
-
约定的目录结构
- 根目录:工程名
src
目录:存放项目代码main
目录:存放主程序文件java
目录:存放 Java 源代码文件resource
目录:存放程序使用的配置文件webapp
目录:Web 工程目录,存放js、jsp、web.xml
等文件
test
目录:存放测试程序文件,可以没有java
目录:存放测试用的 Java 源代码文件resource
目录:存放测试程序使用的配置文件
- [
target
目录]- 存放编译后的
.class
文件 - 构建时不存在,编译后产生该目录
- 存放编译后的
pom.xml
文件:Maven 核心配置文件,配置 Maven 依赖项等资源
- 根目录:工程名
常用命令
mvn clean
:清理,删除之前的 targetmvn compile
:编译主程序,即src/main/java
目录下程序- 编译完成后生成
target
目录
- 编译完成后生成
mvn test-cpmpile
:编译测试程序mvn test
:执行测试- 默认插件版本不对时会报错,需要手动修改插件版本
mvn package
:打包src\main\
目录下文件- 根据工程类型打包方式为
jar
或war
包
- 根据工程类型打包方式为
mvn install
:安装- 将 jar、war 包复制到 maven 仓库
mvn site
:生成站点
仓库
- 分类
- 本地仓库
- 当前电脑上部署的仓库目录
- 为当前电脑上所有 Maven 工程服务
- 远程仓库
- 私服
- 搭建在局域网环境
- 为局域网范围所有 Maven 工程服务
- 中央仓库
- 架设在 Internet
- 为全世界所有 Maven 工程服务
- 中央仓库镜像
- 架设在各大洲
- 为中央仓库分担流量,减轻中央仓库的压力,同时更快响应用户请求
- 私服
- 本地仓库
- 仓库中的文件
Maven
需要的的插件- 第三方框架或工具的
jar
包 - 自己开发的
Maven
工程
jar 包下载
下载方式
Maven
核心程序仅定义抽象的生命周期- 具体工作必须由特定插件完成
- 插件本身并不包含在
Maven
核心程序中
- 执行 Maven 需要用到某些插件
- 首先到本地仓库查找
- 本地仓库默认位置:
C:用户\当前用户名\.m2\repository
- 本地仓库默认位置:
- 本地找不到需求插件自动搜索私服
- 私服中没有或不存在私服,自动连接外网通过镜像仓库下载
- 外网仅指区别于局域网的网络环境
- 私服中没有或不存在私服,自动连接外网通过镜像仓库下载
- 连接外网后进行下载,下载完成后私服保留一份,再发送到本地下载
- 无法连接外网则构建失败
- 镜像仓库中没有会找中央仓库下载
- 中央仓库没有即没有该
jar
资源
- 中央仓库没有即没有该
- 首先到本地仓库查找
修改本地仓库位置
- 找到
Maven
程序解压目录中\conf\setting.xml
文件 setting.xml
文件中找到localRepository
标签- 找到
<localRepository></localRepository>
标签对- 默认在注释中
- 将标签内容修改为已经准备好的
Maven
仓库目录
<localRepository>
D:\Tool\Maven\software <!-- 自定义本地仓库位置 -->
</localRepository>
修改镜像仓库
-
Maven 默认的官方仓库地址在国外,访问下载速度较慢
- 通过配置镜像仓库使用国内的镜像仓库进行下载,提高下载速度
Setting.xml
文件中<mirrors><mirrors/>
标签组中- 写在上面的仓库地址优先生效
<mirrors> <!-- 国内阿里云的 Maven 仓库镜像 --> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> <!-- 官方默认国外仓库 --> <mirror> <id>maven-default-http-blocker</id> <mirrorOf>external:http:*</mirrorOf> <name>Pseudo repository to mirror external repositories initially using HTTP.</name> <url>http://0.0.0.0/</url> <blocked>true</blocked> </mirror> </mirrors>
POM
Project Object Model
:项目对象模型DOM
(Document Object Model
):文档对象模型
pom.xml
是Maven
的核心配置文件- 与构建过程相关的一切设置都在此文件配置
- 相当于
web.xml
对于动态Web
工程
属性
基本属性
-
modelVersion
-
指定
pom.xml
符合的Maven
模型版本 -
对 Maven 2 和 3 只能是 4.0.0
-
<modelVersion>4.0.0</modelVersion>
-
-
packaging
-
项目类型,描述打包后的输出类型
-
默认
jar
包- 常见
war
、pom
、rar
、ear
等
- 常见
-
<packaging>war</packaging> <!-- 指定为 war 包,不声明默认 jar 包 -->
-
-
dependencies
、dependency
:依赖标签,相当于import
-
dependencies
- 母标签,中间可以嵌套多个依赖
-
dependency
:一组标签添加一个依赖- 依赖中添加
jar
包坐标
- 依赖中添加
-
<dependencies> <!-- 导入 MyBatis 依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.9</version> </dependency> </dependencies>
-
-
properties
:配置属性-
Maven 自带配置属性 和 自定义属性
-
properties
内可以使用自定义标签声明变量- 使用
${标签名}
引用变量值 - 多用于管理依赖的版本号
- 使用
-
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 项目构建编码属性 --> <maven.compiler.source>1.8</maven.compiler.source> <!-- 编译源码 JDK 版本 --> <maven.compiler.target>1.8</maven.compiler.target> <!-- 编译目标字节码版本 --> </properties>
-
-
build
:maven
进行项目构建时配置信息-
例如:指定编译插件
Java
代码的JDK
版本 -
plugins
、plugin
:插件配置- 配置插件,添加插件坐标导入
configuration
:配置插件信息
-
<build> <!-- 插件配置 --> <plugins> <!-- 测试插件版本配置 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M3</version> <configuration> <forkCount>0</forkCount> <testFailureIgnore>true</testFailureIgnore> </configuration> </plugin> </plugins> <!-- 资源文件配置 --> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> </resources> </build>
-
-
parent
:继承标签,继承父工程pom.xml
文件的配置-
<!-- Spring Boot 默认继承父工程配置 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.4</version> <relativePath/> <!-- lookup parent from repository --> </parent>
-
-
module
:聚合,安装各个模块- 配置此属性后可以统一打包所有模块
坐标
-
数学坐标概念
-
平面中 X、Y 向量唯一定义一个点
-
空间中 X、Y、Z 向量唯一定义一个点
-
-
Maven 坐标概念
-
三个向量在仓库中唯一定义一个 Maven 工程
-
groupid
:组织 ID-
一般是公司或组织 域名倒序 + 项目名
-
<groupid>com.baidu.demo</groupid>
-
-
artifactid
:模块、项目名称-
<artifactid>demo</artifactid>
-
-
version
:项目版本号-
三位数字标识 + 版本类别
-
SNAPSHOT
- 快照,常在开发中使用
- 不稳定版本
-
LATEST
- 某个特定构件的最新发布
- 可能是发布版,或 SNAPSHOT
-
RELAEASE
- 最后一个发布版
-
<verison>1.0.0-SNAPSHOT</verison>
-
-
-
坐标与仓库路径
-
一般 jar 包被识别为
groupId:artifactId:version
格式 -
<!-- 配置坐标 --> <groupid>com.baidu.demo</groupid> <artifactid>demo</artifactid> <verison>1.0.0-SNAPSHOT</verison> <!-- 根据配置找到文件路径;坐标定义文件路径: com/baidu/demo/demo/1.0.0-SNAPSHOT/demo-1.0.0-SNAPSHOT.jar -->
资源插件
编译配置文件
<build>
<resources>
<resource>
<!-- 所在的目录 -->
<directory>src/main/java</directory>
<includes>
<!-- 包括目录下的 .properties、.xml文件都会扫描到 -->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!-- filtering 设置 false,不启用过滤器 -->
<!-- *.properties 已经起到过滤作用 -->
<filtering>false</filtering>
</resource>
</resources>
</build>
- 不声明
resources
maven
执行编译时把src/main/resources
目录中文件拷贝到target/classes
目录中- 对于
src/mian/java
目录下非 Java 文件不处理,不拷贝到target/classes
- 其他类型文件在
src/mian/java
目录中- 运行时需要用到
src/mian/java
目录中文件- 在
build
标签中添加resoueces
标签 - 配置需要扫描处理的文件类型
- 在
- 运行时需要用到
修改 JDK 语言级别
-
IDEA 中修改语言级别
maven
项目更新后会初始化回默认语言级别- 很可能和项目语言级别不匹配
-
使用属性配置项目运行与编译的 JDK 版本
- 使用插件形式指定
- 会强制更改 IDEA 的语言级别配置
- 使用属性配置
- 使用插件形式指定
-
<!-- 属性配置编译jdk 版本,推荐使用 --> <properties> <!-- 配置编译 .java 文件 和 .class 文件的 jdk 级别 --> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <!-- 配置源码文件和编译文件的字符编码 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <!-- 通过编译插件配置源码和编译文件的 jdk 版本,可以强制改变 IDEA 的默认语言级别 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.8</source> <!-- 源码 --> <target>1.8</target> <!-- 编译后字节码 --> </configuration> </plugin> </plugins> </build>
测试插件更新
-
Maven版本较高时进行打包可能会有编译测试程序不通过
- 需要更新测试插件
-
<plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M5</version> <configuration> <skipTests>false</skipTests> <testFailureIgnore>true</testFailureIgnore> <forkMode>once</forkMode> </configuration> </plugin> </plugins>
依赖
-
Maven 解析依赖信息会到本地仓库中查找被依赖的 jar 包
- 自己开发的 Maven 工程使用 install 命令安装后被放入仓库中
依赖范围
<scope>范围</Scope>
- 三个范围
compile
- 全部阶段都生效
- 不标明时默认使用的范围
test
- 只针对测试阶段有效
provided
- 只针打包前的流程
- 不参与部署,不会被打包
- 三个范围
作用\依赖范围 | compile | test | provided |
---|---|---|---|
对主程序 | 有效 | 无效 | 有效 |
对测试程序 | 有效 | 有效 | 有效 |
打包 | 参与 | 不参与 | 不参与 |
部署 | 参与 | 不参与 | 不参与 |
传递性
- 被导入
jar
包的依赖会自动导入- 添加一个依赖后该
jar
包依赖自动导入
- 添加一个依赖后该
- 直接依赖
maven
工程自身导入的依赖
- 间接依赖
- 导入依赖所依赖的文件
- 自动传递导入
- 作用
- 可以传递的依赖不必在每个模块工程中重复声明
- 在最下层工程中依赖一次即可自动传递依赖
- 注意
- 非
compile
范围依赖无法传递
- 非
依赖排除
- 是相对于传递性而言的
- 排除掉传递来的不想要的 jar 包
- 例如:不稳定 jar 包对项目可能有干扰
- 排除掉传递来的不想要的 jar 包
- 在要排除的工程依赖信息中添加
<exclusion>
- 当前工程排斥此引用依赖后,此工程被其他工程依赖时不会被传递该依赖
<!-- 添加在需要排除特定依赖的 maven 工程中,排除该依赖传递进来 -->
<exclusions>
<exclusion> <!-- 排斥 -->
<groupId>项目名</groupId>
<artifactId>模块名</artifactId>
</exclusion>
</exclusions>
依赖原则
- 当不同版本的相同 jar 依赖产生冲突
- 路径较短优先:中间传递的依赖又使用了其他版本的相同依赖
- 即 传递次数较少优先
- 路径相同时:同时依赖的 jar 包依赖的不同版本的相同 jar 包
- 先声明的依赖优先
- 路径较短优先:中间传递的依赖又使用了其他版本的相同依赖
统一管理依赖版本
-
比如对
spring 4.0.0
版本统一升级 4.1.1- 手动修改不靠谱
-
proerties
标签内使用自定义标签统一声明版本号-
凡是需要统一配置引用的都可以使用
- 例如:字符编码
UTF-8
<properties> <!-- 标签名自定义 --> <maven.spring.version> <!-- 标签内容自定义 --> 4.0.0.RELEACE </maven.spring.version> </properties>
- 例如:字符编码
-
需要统一版本的位置使用自定义标签引用声明的版本号
- 引用格式:
${自定义标签}
<dependency> <groupId>...</groupId> <artifactId>...</artifactId> <version> <!-- 引用自定义标签进行版本控制 --> ${maven.spring.version} </version> </dependency>
- 引用格式:
-
<!-- 添加对第一个 Maven 工程依赖 -->
<dependencies>
<!-- 需要先将此 Maven 工程安装到仓库 -->
<dependencies>
<groupid>com.baidu.demo</groupid>
<artifactid>demo</artifactid>
<verison>1.0.0-SNAPSHOT</verison>
<scope>compile</scope>
</dependencies>/
</dependencies>
Junit
-
专门的测试框架
-
对类中的方法进行测试
-
每一个方法单独测试
- 方法是测试的基本单位
-
-
Maven 借助单元测试批量测试类中的大量方法是否符合预期
-
使用步骤
-
加入依赖
-
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency>
-
-
在 Maven 项目中
src\test\java
目录下创建测试程序- 命名规范
- 测试类名:Test+类名
- 测试方法名:Test+方法名
- 命名规范
-
测试方法定义规则
- 方法必须是
public
- 无返回值
- 方法名自定义
- 方法上面加
@Test
注解- 导入
org.junit.Test
类
- 导入
- 方法必须是
-
生命周期
流程
-
生命周期:构建项目的过程,不能打乱顺序
-
Maven 核心程序定义了抽象的生命周期
- 各阶段具体任务由插件完成
-
Maven 为更好实现自动化构建的执行特点
- 无论想要执行生命周期哪个阶段都从此生命周期最初位置开始执行
- 按照此特点执行到生命周期各个阶段
-
插件
- 生命周期各阶段仅定义了要执行的任务
- 各阶段和插件的目标是对应的
- 相似的目标由特定插件完成
- 可将目标看作
调用插件功能的命令
- 可将目标看作
- 生命周期各阶段仅定义了要执行的任务
-
例如
生命周期阶段 插件目标 插件 compile compile maven-compiler-plugin test-compile testCompile maven-compiler-plugin
三套周期
- 三套独立的生命周期,按照阶段顺序排列命令
Clean Lifecycle
- 进行构建之前进行清理工作
pre -clean
:执行需在 clean 前完成的工作clean
:移除所有上一次构建的文件post -clean
执行需要在 clean 之后立刻完成的工作
Default Lifecycle
:构建的核心部分:编译、测试、打包、安装、部署等validate
generate-sources
process-sources
generate-resources
process -resources
:复制并处理资源文件至目标目录,准备打包compile
:编译项目的源代码process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources
:复制并处理资源文件至目标测试目录test-compile
:编译测试源代码process-test-classes
test
:使用合适的单元测试框架运行- 测试代码不会被打包或部署
prepare-package
packaeg
:接受编译好的代码,打包成可发布的格式,如 jarpre-integration-test
integration-test
post-integration-test
verify
install
:将包安装到本地仓库,以便其他项目依赖deploy
:将最终的包复制到远程的仓库- 让其他开发人员与项目共享或部署到服务器上运行
Site Lifecycle
- 生成项目报告,站点,发布站点
pre -site
:行需要在生成站点文档之前完成的工作site
:生成项目的站点文档post -site
:执行需要在站点文档生成之后立刻完成的工作- 并为部署做准备
site -deploy
:将生成的站点文档部署到特定的服务器
继承
意义
-
为什么需要继承
-
例:
junit
依赖junit
是test
范围依赖,不能传递- 必然零散分布在各个模块工程中,很容易造成版本不一致
-
解决思路:将
junit
依赖统一提取到“父”工程- 子工程中声明
junit
依赖时不指定版本- 以父工程中统一设定的为准,同时便于统一管理
- 子工程中声明
-
操作步骤
-
创建
maven
工程作为父工程- 打包方式为
pom
- 打包方式为
-
在子工程声明对父工程的引用
-
使用相对于本文件的相对路径避免找不到文件
<!-- parent 标签声明父工程 --> <parent> <!-- 引用的父工程坐标 --> <groupId>... </groupId> <artifactId> ... </artifactId> <version> ... </version> <!-- 以当前文件为基准父工程 pom.xml 的相对路径 --> <relativePath> <!-- ../ 回退到根目录,找到父工程 Parent,再找到 pom.xml 路径 --> ../Parent/pom.xml </relativePath> </parent>
-
-
将子工程与父工程的坐标中重复的内容删除
- 重复路径代码冗余
-
父工程统一管理
junit
依赖- 子工程中删除
junit
依赖的版本号- 不删除版本号意味着重写父工程依赖
- 将会使用不同版本依赖
- 子工程中删除
-
注意:配置继承后执行安装命令需要先安装父工程
聚合
-
作用:一键安装各模块
-
配置方式:在总聚合工程配置各个参与聚合的模块
-
<!-- 以在父工程添加聚合举例 --> <modules> <!-- 指定各子工程的路径 --> <module>../Hello</module> <module>../demo</module> </modules>
-
-
使用方式:在聚合工程的
pom.xml
文件安装模块
Eclipse 使用 Maven
配置 Maven
- Maven 插件设置
- Window -> Preferences -> Maven
installations
:指定 Maven 核心程序的位置- add 添加本地 Maven 程序
- 不建议使用自带的 Maven 程序
user setting
- 指定本地 Maven 程序的
conf/settings.xml
文件位置 - 获取本地仓库位置
- 指定
settings.xml
文件自动获取
- 指定
- 指定本地 Maven 程序的
- Window -> Preferences -> Maven
创建 Maven 工程
-
创建 Maven 版 Java 工程
- 创建项目时选择
maven
项目 - 添加
groupid
、artifactid
、version
- 默认选择 jar 方式创建完成
- 创建项目时选择
-
创建 Maven 版 Web 工程
-
创建项目时选择 maven 项目
-
添加
groupid
、artifactid
、version
-
选择
war
方式创建完成 -
修改配置创建
web
工程配置文件- 进入
properties
中选择Project Facets
- 取消选中
Dynamic
,再重新选中- 自动生成
Web
工程配置文件
- 自动生成
- 进入
-
执行
Maven
命令- 右键
run as
执行常用命令- 没有的命令选择
buidle...
手动输入命令
- 没有的命令选择
- 右键
-
-
创建文件
- web 工程可能需要更新组件 maven-war-plugin 以支持更高版本 Eclipse
- 添加依赖完成项目支持
- 依赖范围是 Compile,运行 Web 项目时服务器可能报空指针异常
- 依赖 jar 包被打包到 maven 仓库中,tomcat 无法读取
- 依赖范围是 Compile,运行 Web 项目时服务器可能报空指针异常
导入 maven 工程
-
File → Import
-
General
:导入普通工程- 需要有 Eclipse 配置文件识别工程
- 通过
.settings、.classpath、.project
等配置文件识别是 Eclipse 的 java 工程
- 通过
Existing Projects into Workspaces
- 选择文件路径,可将目标工程工程复制进来
- 需要有 Eclipse 配置文件识别工程
-
Maven
:导入 Maven 工程-
Existing Maven Projects
-
选择文件路径:通过 pom.xml 文件识别 maven 工程
-
不能将工程复制进来
-
-
-
Web 工程自动部署
- 手动
- 先手动打包生成 war 包
- package
- 将 war 包放到 tomcat 的 webapps 目录下
- 先手动打包生成 war 包
- 自动
- 添加配置
- 在 eclipse 中使用此配置会导致 tomcat 无法关闭
- 强制关闭时会占用端口号
- 在 eclipse 中使用此配置会导致 tomcat 无法关闭
- 在命令行窗口使用
- 转到 web 项目目录下
- 使用
mvn deploy
命令部署
- 添加配置
<!--配置当前工程构建过程中的特殊配置 -->
<build>
<finalName>工程名</finalName>
<!--配置过程需要使用的插件-->
<plugins>
<plugin>
<!-- cargo 是专门从事启动 Servlet 容器的组织 -->
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin </artifactId>
<version>1.2.3</version>
<configuration>
<!-- 配置当前系统容器位置 -->
<container>
<containerId>tomcat9 </containerId>
<home>D:\Tool\TomCat\apache-tomcat-9.0.13</home>
</container>
<configuration>
<type>existing</type>
<home>D:\Tool\TomCat\apache-tomcat-9.0.13</home>
<properties>
<!-- tomcat 默认端口8080无需配置该属性 -->
<cargo.servlet.port> 8989 </cargo.servlet.port>
</properties>
</configuration>
</configuration>
<executions>
<eecution>
<id>cargo-run</id>
<!-- 生命周期的阶段 -->
<phase>install</phase>
<goals>
<!--插件目标-->
<goal>run</goal>
</goals>
</eecution>
</executions>
</plugin>
</plugins>
</build>
IDEA 使用 Maven
配置 Maven
- 内置 Maven 组件不方便更改设置
- 添加本地 Maven 程序,配置到 IDEA
- File → setting → 搜索 maven
- 添加本地 Maven
- 设置 Maven
setting.xml
文件位置 - 设置 Maven 仓库位置
- 设置 setting.xml 文件后自动获取
- 设置 Maven
- Runner 设置
VM Options
设置-DarchetypeCatalog=internal
- maven 项目创建时会连接网络下载模板文件,管理大量 Maven 工程时会加载缓慢
- 添加此参数从本地加载模板,不会再下载
JRE
:配置项目使用的 JDK
- 添加本地 Maven
File → new project setting
- 配置新项目通用模板
- 配置内容跟上面相同
- 配置新项目通用模板
创建 Maven 工程
- 创建新项目
- 选择 Maven
Create from archetype
:根据模板创建新项目maven-archetype-quickstart
:普通 java 项目- 设置项目名,可以添加父项目
- 修改 id 和 版本
maven-archetype-webapp
:web工程项目
导入 Mavnen 工程
-
和正常导入模块流程相同
- 根据 pom.xml 文件自动识别 Maven 项目
Maven 依赖
-
Maven 依赖查找网站
-
https://mvnrepository.com
-
-
Maven 插件官方网站
-
https://maven.apache.org/plugins/index.html
-