Maven 之工程构建与依赖管理全攻略

简介: 本文系统讲解Maven核心知识:涵盖POM/JAR/WAR工程类型与标准目录结构;详解构建生命周期(validate→compile→test→package→install→deploy)及常用命令;深入解析本地/远程/中央仓库机制,并指导配置本地仓库路径、阿里云镜像及JDK版本。内容精炼实用,助开发者快速掌握Maven项目管理精髓。

【开发哲学共勉】
Maven 构建流程,从验证到部署环环相扣,开发之路也需步步为营— —稳扎稳打,方能得到可靠项目    
--- 艺杯羹  (๑•̀ㅂ•́)و✧

前言

本文将聚焦 Maven 工程类型、构建生命周期及依赖管理等核心知识,用极简结构梳理从项目搭建到远程部署的关键要点,助开发者快速掌握这一开发利器的实用技能

个人主页:艺杯羹

系列专栏:Maven

1. 🏗️Maven工程的类型和结构

1.1. Maven工程类型

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

1.2. Maven工程结构

接下来我们通过一个WAR工程学习Maven工程的结构
这个文件目录我放在了这个文章上方,如果想要的话,随时下载哦~

文件目录结构:

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

项目结构:

  • src/main/java:存放项目的java 文件
  • src/main/resources:存放项目资源文件,如配置文件
  • src/test/java:存放项目的测试文件
  • src/test/resources:存放测试时的资源文件
  • webapp:前端的东西

2. 🚢一键构建

2. 1. 项目的生命周期

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

构建生命周期

生命周期

所做工作

验证 validate

验证项目是否正确

编译 compile

源代码编译

测试 Test

使用适当的单元测试框架(例如junit)运行测试。(测试零件)

打包 package

创建JAR/WAR包

检查 verify

对集成测试的结果进行检查,以保证质量达标。(整体测试)

安装 install

安装打包的项目到本地仓库,以供其他项目使用。

部署 deploy

拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程。

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

2.2. Maven常用命令

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

编译之前都要清空一下

命令

作用

mvn clean

清除编译的class文件,即删除target目录。

mvn validate

验证项目是否正确(编译,一般不用,因为编译器会检查)

mvn compile

编译maven项目,将target目录重新编译

mvn test

编译maven项目及运行测试文件

mvn package

编译maven项目及运行测试文件,并打包

mvn install

编译maven项目及运行测试文件并打包,并发布到本地仓库

mvn deploy

部署项目到远程仓库

mvn tomcat7:run

使用tomcat运行项目

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

仓库的位置

3. 🔗依赖管理

3.1. 📦Maven仓库类型

3.1.1. 本地仓库

本地仓库指用户计算机中的文件夹。用来存储从远程仓库或中央仓库下载的jar包,只有下载到本地仓库的jar包才能使用,项目使用jar包时优先从本地仓库查找。

3.1.2. 远程仓库

远程仓库一般指私服,它是架设在局域网的仓库服务,可以从中央仓库下载资源,供局域网使用,从而减少每个程序员都从中央仓库下载浪费的带宽。

如果项目需要的jar包本地仓库没有,则会去远程仓库下载,下载到本地仓库即可使用。

远程仓库不是必须配置的,如果本地仓库没有jar包,也没有配置远程仓库,则会直接从中央仓库下载。

没有远程仓库,就会直接去找中央仓库

3.1.3. 中央仓库

中央仓库是互联网上的服务器,是Maven提供的最大的仓库,里面拥有最全的jar包资源。

如果项目需要的jar包,本地仓库和远程仓库都没有,则会去中央仓库下载,下载到本地仓库使用。

Maven中央仓库访问页面:https://mvnrepository.com/

中央仓库访问速度较慢,所以要配置镜像来让加快访问,如阿里镜像、华为镜像等。

镜像:他们服务器的速度快,帮我们下载好后,传到文件里

3.2. ⚙️Maven配置文件

默认是仓库是放在C盘的可是,C盘的资源很宝贵,所以就要修改一下存放的位置

本地仓库的默认位置是{user.dir}/.m2/repository,{user.dir}表示 windows用户目录,我们可以通过修改${MAVEN_HOME}\conf\settings.xml,修改本地仓库的位置。

3.2.1. 配置本地仓库

conf目录下的settings.xml

中添加如下标签:

<!-- 本地仓库路径 -->
<localRepository>e://repository</localRepository>

测试是否修改成功位置

在项目目录内中的地址栏,输入cmd

先输入mvn clean 命令,先清除,在这过程中,因为地址发生变化了,所以会重新加载一些内容

再使用 mvn install 命令将文件并打包,并发布到本地仓库



修改位置成功

3.2.2. 配置镜像

由于中央仓库访问速度较慢,可以配置镜像代理中央仓库的下载请求。在下的中添加如下标签即可配置镜像(配置的写法都是死的):   ——

<mirror>
<!-- 指定镜像ID -->
<id>nexus-aliyun</id>
<!-- 匹配中央仓库。-->
<mirrorOf>central</mirrorOf>
<!-- 指定镜像名称 -->
<name>Nexus aliyun</name>
<!-- 指定镜像路径 -->
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

3.2.3. 配置JDK版本

创建maven项目的时候,默认使用的JDK是1.5版本,验证语法、编译、运行时都会按照JDK1.5操作,这样就有很多语法无法使用。我的电脑安装的JDK是JDK1.8,可以配置maven按照JDK1.8创建项目。

如果要配置其他版本的jdk,那么修改这个代码里的数字即可,例如,jdk11,将1.8替换成11即可

在**下的**中添加如下标签即可配置JDK版本:

<profile>  
  <id>jdk1.8</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>

4. 总结

希望本文能够帮助到大家😊

目录
相关文章
|
1天前
|
XML 运维 Java
Tomcat 核心配置解析:4 大文件、乱码处理、端口与 Manager 配置
本文详解Tomcat四大核心配置文件(context.xml、web.xml、server.xml、tomcat-users.xml)功能与配置要点,涵盖控制台乱码解决、端口修改、Manager管理界面启用及用户权限配置,助你扎实掌握Tomcat运维关键技能。
25 0
Tomcat 核心配置解析:4 大文件、乱码处理、端口与 Manager 配置
|
1天前
|
SQL Java 数据库连接
MyBatis 之基础概念与框架原理详解
MyBatis是一款轻量级半自动ORM框架,封装JDBC,让开发者专注SQL编写与业务逻辑;支持XML/注解配置、动态SQL、高级映射,SQL与代码分离,灵活高效,显著提升持久层开发效率。(239字)
29 1
MyBatis 之基础概念与框架原理详解
|
1天前
|
前端开发 中间件 网络安全
PageAdmin CMS实现后台内网和前台外网分离部署的教程
本项目基于PageAdmin CMS平台版构建市级政务站群,后台部署于内网麒麟V10服务器,前端HTML静态化生成并推送至对外服务器;集成人大金仓数据库、中创中间件及阿里云OSS存储,通过lsyncd实现安全高效的跨服务器文件同步。
|
1天前
|
Java 测试技术 数据库连接
Maven 之 JUnit 测试体系构建全解析
本文详解Maven工程中JUnit单元测试实践:从pom.xml依赖配置、test目录结构规范,到@Test断言验证、@Before/@After资源管理,涵盖黑/白盒测试原理与结果判定技巧,助力保障Java代码质量。(239字)
25 1
|
1天前
|
SQL 安全 Java
MyBatis 之分页四式传参与聚合、主键操作全解
本文详解MyBatis高频操作:分页查询(@Param、POJO、Map等4种传参方式)、聚合统计(如count)及主键回填(selectKey实现),强调规范性与效率,助开发者写出更安全、可维护的数据层代码。
24 1
|
1天前
|
SQL Java 数据库连接
MyBatis之核心对象与工作流程及SqlSession操作
本文详解MyBatis四大核心对象(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)及其协同工作流程,涵盖建造者/工厂/代理等设计模式应用,并演示如何通过SqlSession直接执行SQL,助力开发者深入理解框架底层机制。(239字)
25 0
MyBatis之核心对象与工作流程及SqlSession操作
阿里云轻量应用服务器68元/年,新用户特价,不要退款,重新买价格459元,涨价了!
阿里云轻量应用服务器新用户专享价68元/年(2核2G、200M带宽、40GB ESSD),秒杀低至38元。⚠️地域选定后不可修改,退款将失去新用户资格,再购恢复原价459元/年!务必下单前确认地域,避免浪费优惠。阿里云轻量应用服务器官网:https://t.aliyun.com/U/dwftch
|
1天前
|
Web App开发 人工智能 开发工具
一个人就是一支队伍:Web 开发者的单兵作战装备清单
老陈用一张图把阿杰的装备串成链:Docker Desktop 解耦环境、Chrome 插件给 AI 装手眼、git 双入口(宿主机+容器)共用一份历史、cc-switch 零成本切模型、harness 镜像开放 12345/12346 让 AI 操控浏览器、容器里带说明书的 Claude Code 自己写自己测自己提交。从 php-vibe-coding-frame 改起即可开启单兵作战。
32 0
|
1天前
|
算法
Tushare接口文档:因子列表(factor_list)
`factor_list`是Tushare提供的因子数据目录接口,用于获取Tushare自主研发的全部量化因子列表,包括因子名称、因子分类和算法逻辑等元数据信息。该接口是使用Tushare因子值(`factor_value`)的前置查询工具,帮助用户了解有哪些因子可用以及每个因子的具体含义。
24 0
|
1天前
|
人工智能 C语言
二级C语言题解:十进制转其他进制、非素数求和、重复数统计
本文详解三类经典编程题:十进制转任意进制(填空)、非素数求和(修改)与重复数字统计(设计),含完整代码、逐空分析及易错点解析,助你夯实C语言基础。
23 2
二级C语言题解:十进制转其他进制、非素数求和、重复数统计

热门文章

最新文章