IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Maven入门宝典(一)Maven介绍 -> 正文阅读

[Java知识库]Maven入门宝典(一)Maven介绍

目录

一.Maven简介

二.Maven的作用

三.Maven的安装

四.Maven工程的类型和结构

?????? ? 1.Maven工程类型

2.Maven工程结构

五.一键构建_项目的生命周期

六.一键构建_Maven常用命令

七.依赖管理_Maven仓库类型

八.依赖管理_Maven配置文件


一.Maven简介

Maven 是一个项目管理工具。它可以帮助程序员构建工程,管理 jar包,编译代码,完成测试,项目打包等等。
  • Maven工具是基于POMProject Object Model,项目对象模型)实现的。在Maven的管理下每个项目都相当于是一个对象。
  • Maven标准化了项目的构建。即对项目结构,构建命令等进行了标准化定义。
  • Maven提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源类库。
  • Maven是跨平台的,在WindowsLinuxMac上,都可以使用同样的命令。

二.Maven的作用

一键构建
我们的项目往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程,这些过程称之为构建。通过 Maven 工具,可以使用简 单的命令轻松完成构建工作。
依赖管理
传统的 Web 项目中,我们必须将工程所依赖的 jar 包复制到工程中,导致了工程的变得很大。如果一个公司具有相同架构的项目有十 个,那么就需要将这一份 jar 包复制到十个不同的工程中,非常浪费 资源。
同样的项目内容,传统 Web 项目大小如下:

而使用 Maven 构建的项目大小如下:
这说明了传统 Web 项目中大部分磁盘空间是被 jar 包占据,而 Maven 项目中一定没有 jar 包,那没有 jar 包的项目是怎么运行的呢?
maven 工程中不直接将 jar 包导入到工程中,而是有一个专门存放 jar 包的仓库,仓库中的每个 jar 包都有自己的坐标。 maven 工程中只要 配置 jar 包坐标即可,运行项目需要使用 jar 包时,根据坐标即可从 maven 仓库中拿到 jar 包即可运行。

三.Maven的安装

先确保安装好jdk和配置好JAVA_HOME 。

下载:

访问?Maven – Download Apache Maven

安装
解压下载好的安装文件,解压后目录结构如下:
  • bin:存放maven的命令
  • boot:存放maven本身的引导程序,如类加载器等
  • conf:存放maven的配置文件
  • lib:存放maven本身运行所需的jar
配置环境变量
由于 Maven 是由 Java 语言开发的,运行时依赖 Java 环境,所以要在计算机的环境变量中配置 JAVA_HOME ,我之前已经配好。
为了更方便的使用 Maven 命令,需要在环境变量中配置 MAVEN_HOME Path

再继续在系统变量的Path里添加如下:

%MAVEN_HOME%\bin
查看版本
管理员身份打开 CMD 命令窗口,输入 mvn - v ,显示 Maven 版本和 Java 版本,证明安装成功。

四.Maven工程的类型和结构

1.Maven工程类型

POM工程
POM 工程是逻辑工程, Maven 并不会对该类型工程做打包处理,这些工程往往不包含具体的业务,而是用来整合其他工程 的。
JAR工程
普通 Java 工程,在打包时会将项目打成 jar 包。
WAR工程
JAVA Web 工程,在打包时会将项目打成 war 包。

2.Maven工程结构

接下来我们通过一个 WAR 工程学习 Maven 工程的结构
文件目录结构:

  • src:源代码
  • target:编译生成的文件
  • pom.xmlMaven工程配置文件,如坐标信息等。

项目结构:

  • src/main/java:存放项目的java 文件
  • src/main/resources:存放项目资源文件,如配置文件
  • src/test/java:存放项目的测试文件
  • src/test/resources:存放测试时的资源文件
  • src/main/webapp:存放前端的一些文件,比如html,css等

五.一键构建_项目的生命周期

使用 maven 完成项目的构建的过程中,包括:验证、编译、测试、打包、部署等过程, maven 将这些过程规范为项目构建的生命周 期。

maven 有三套相互独立的生命周期。分为是构建生命周期, clean 生命周期(清理构建后的文件)、 site 生命周期(生成项 目报告)。作为开发人员我们一般重点学习构建生命周期即 可。

六.一键构建_Maven常用命令

Maven 构建项目的每一步都可以使用一句简单的命令完成,接下来我们学习这些命令:

Maven 依赖插件来执行命令,比如 clean validate 等命令是maven 自带的, tomcat7 命令是引入的第三方插件。

七.依赖管理_Maven仓库类型

本地仓库
本地仓库指用户计算机中的文件夹。用来存储从远程仓库或中央仓库下载的 jar 包,只有下载到本地仓库的 jar 包才能使用,项目使用 jar 包时优先从本地仓库查找。
远程仓库
远程仓库一般指私服,它是架设在局域网的仓库服务,可以从中央仓库下载资源,供局域网使用,从而减少每个程序员都从中央仓库 下载浪费的带宽。
如果项目需要的 jar 包本地仓库没有,则会去远程仓库下载,下载到本地仓库即可使用。
远程仓库不是必须配置的,如果本地仓库没有 jar 包,也没有配置远程仓库,则会直接从中央仓库下载。
中央仓库
中央仓库是互联网上的服务器,是 Maven 提供的最大的仓库,里面拥有最全的 jar 包资源。
如果项目需要的 jar 包,本地仓库和远程仓库都没有,则会去中央仓库下载,下载到本地仓库使用。
Maven 中央仓库访问页面: https://mvnrepository.com/ ?
中央仓库访问速度较慢,我们一般都会配置镜像代理中央仓库的下载请求,如阿里镜像、华为镜像等。

八.依赖管理_Maven配置文件

本地仓库的默认位置是 ${user.dir}/.m2/repository ${user.dir} 表示 windows 户目录,我们可以通过修改 ${MAVEN_HOME}\conf\settings.xml ,修改本地仓库 的位置。
配置本地仓库
<settings> 中添加如下标签:
参数是指定的仓库路径
<!-- 本地仓库路径 -->
<localRepository>F://repository</localRepository>
配置镜像
由于中央仓库访问速度较慢,可以配置镜像代理中央仓库的下载请求。在 <settings> 下的 <mirrors> 中添加如下标签即可配置镜像:
将原来的<mirror>标签覆盖即可
<mirror> ?
 ? ?<!-- 指定镜像ID -->
 ? ?<id>nexus-aliyun</id> ?
 ? ?<!-- 匹配中央仓库。-->
 ? ?<mirrorOf>central</mirrorOf>
 ? ?<!-- 指定镜像名称 --> ? ?
 ? ?<name>Nexus aliyun</name> ?
 ? ?<!-- 指定镜像路径 -->
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url> ?
</mirror>
配置 JDK 版本
创建 maven 项目的时候,默认使用的 JDK 1.5 版本,验证语法、编译、运行时都会按照 JDK1.5 操作,这样就有很多语法无法使用。我 们本机安装的 JDK JDK8 ,可以配置 maven 按照 JDK8 创建项目。
<settings> 下的 <profiles> 中添加如下标签即可配置 JDK 版本:

    <profile> ?
 ? ?	<id>jdk18</id> ? ?
 ? ?	<activation>
			<activeByDefault>true</activeByDefault> ? ?
 ? ? ? ?	<jdk>1.8</jdk> ?
 ? ?	</activation> ? ?
 ? ?	<properties> ?
 ? ? ?		<maven.compiler.source>1.8</maven.compiler.source> ? ?
 ? ? ?		<maven.compiler.target>1.8</maven.compiler.target> ? ?
 ? ? ?		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> ?
 ? ?	</properties> ?
	</profile>

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-15 11:30:57  更:2022-05-15 11:32:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:56:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码