Maven
Maven
Maven:项目构建工具
Gradle:安卓领域
Ant:淘汰
Maven:项目构建工具
整个项目架构:source,resource,test,testresource
依赖:导入的 jar 包
对项目进行打包
属于apache 基金会
配置环境变量
新建 MAVEN_HOME : maven 的安装路径
新建 PATH:新建一个 %MAVEN_HOME%\bin
通过cmd:mvn -v 测试配置成功
Maven解压后
conf 目录,配置文件,在这个目录下有一个 settings.xml,Maven 的核心配置文件
Maven会给我们自动下载 jar 包
把 jar 包放在本地,不往项目里导,通过某些方式连接到 jar 包
Maven目录下conf 下 settings.xml 配置
jar 包的保存位置
设置 jar 保存位置
<loclRepository>E:/repository</loclRepository>
Maven 默认中央仓库,在美国
可以做一个镜像,阿里云maven镜像仓库,需要配置阿里云镜像仓库
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
创建 Maven 项目
第一次创建 MAVEN 项目,会联网下载一些文件
src
main---源码
java---源码.java
resources---资源文件
test---测试源码
java---测试源码.java
resources---测试资源文件
pom.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>
<!-- 这是我们当前项目的GAV坐标 -->
<groupId>com.jsoft</groupId>
<artifactId>maven01</artifactId>
<!--
版本:
1、SNAPSHOT:快照,不稳定版本,临时版本
2、LATEST:最新版,不意味着是稳定版本
3、RELEASE:发布版,正式版,稳定版
-->
<version>0.1</version>
<!--
打包方式
1、jar
2、war
3、pom
-->
<packaging>war</packaging>
<!--
properties定义一些变量
-->
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<javax.servlet-api.version>4.0.1</javax.servlet-api.version>
</properties>
<!-- maven的下载 -->
<dependencies>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${javax.servlet-api.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
建成 web 项目
可用 Maven 项目架构,也可以自己手动设置
手动设置:
在 main 下创建 webapp
在project Settings 设置下 Modules 添加 web
Deployment Descriptors设置 \WEB-INF\web.xml位置
Web Resource Directories 下设置添加 web 添加到哪里

Maven生命周期
target目录:存放编译后的java文件


点击右侧 Maven
默认(default)真正进行项目编译打包等工作阶段
1、validate:验证项目是否正确
2、compile:编译,编译项目的源代码*****
3、test:测试,junit这些测试不应该要求代码被打包或部署
4、package:进行打包。*****
java工程-------.jar
javaweb工程----.war
5、verify:验证,对集成测试结果执行检查
6、install:安装*****
所有的项目都可以编程jar包(依赖)
7、deploy:部署,将最终的包赋值到远程存储库,和其他开发人员共享(maven私服)
清理(clean)执行必要的清理工作。删除target文件夹
站点(site)生成项目报告,站点,发布站点(基本不用)
Maven坐标:
GroupId:团体组织标识符,它一般情况下以创建这个组织的名称的逆向域名开头。
ArtifactId:项目名。单独项目的唯一标识符。
Version:版本
通过这三个向量来定位Maven仓库中其jar包所在的位置,把对应的jar包引入到工程中。
<!-- maven 下载 -->
<dependencies>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
</dependencies>
依赖范围:
<scope>test</scope>
compile:默认。编译范围,编译,测试,运行都有效。参与打包,安装。
test:测试范围,只有在test范围下才能用,不参与打包,安装。
provided:编译和测试,不参与打包,安装。
runtime:运行,只参与运行。
system:废弃。系统。
import:废弃。引入。
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<javax.servlet-api.version>4.0.1</javax.servlet-api.version>
</properties>
<!-- maven 下载 -->
<dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${javax.servlet-api.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
依赖的传递:(常识性问题)
假如demo01中引入了mysql,servlet,fastjson,codec依赖,我把demo01install到了我的本地仓库,或者是maven私服,如果其他成员通过GAV引入了我的demo01,demo01中的mysql,servlet
fastjson,codec会不会一起引入进来???会

浙公网安备 33010602011771号