Maven 之工程化开发核心指南:插件配置、pom 文件与依赖管理

简介: 本文详解Maven工程化开发核心:从IDEA中Maven插件配置、Web项目创建与目录结构搭建,到pom.xml关键配置(坐标、properties、dependencies、plugins)、依赖范围(provided等)原理与实战,助你掌握工程化思维,高效构建Java项目。(239字)

【开发哲学共勉】

pom 文件作为 Maven 项目的核心,以简洁的标签和精准的配置,掌控着依赖的全局,如同船长依据航海图引领巨轮在复杂的海洋中航行,确保项目在正确的航道上前行。

🎉 前言

在 Java 生态中,Maven 是工程化开发的核心基石。它以标准化流程解决依赖管理与构建繁琐问题,让项目从代码到交付的链路清晰可控
本文聚焦 Maven 工程开发核心环节:从 Maven 插件配置、工程构建步骤,到 pom 文件关键配置逻辑,再到代码编写要点与依赖范围规则。掌握这套体系,不仅能驾驭工具,更能建立工程化思维,在团队协作与项目迭代中实现高效开发

个人主页:艺杯羹

系列专栏:Maven 

1. 🧩Maven插件

Maven 插件用于扩展 Maven 核心能力

setting --> 输入 maven --> 修改安装路径,配置文件路径,修改本地仓库路径


其中的第二个“配置文件路径”,要配置到Settings.xml

这就配置好Maven插件了
但是这个配置好了后,只能在当前项目中有用,在新的项目中又要重新配置了

新建新项目时,就会自动配置好maven插件的方法

file ---> New Projects Setup ---> Settings for New Projects...

再按照刚刚那个方法配置一遍

之后再创建项目时,就会沿用这个Maven配置(๑•̀ㅂ•́)و✧

maven工程,就是可以使用Maven来管理的工程

2. 🏗️构建Maven工程

接下来我们构建一个Maven的Web工程:

  1. 打开 idea,选择创建一个新工程
  2. 选择Maven工程,并使用maven的web工程模板


    项目组:公司名
  3. 手动添加src/main/java目录,此时该目录还不能写Java代码

    可以看到这个目录和之前讲的目录还有一些没有创建出来,那么我们就要手动创建了
    要给每个文件夹功能
  4. 添加文件
    如果main下的java文件夹里不能用写java文件
    那么就右击文件夹,在最下方选择“Sources Root”,就可以写java文件了
    test中的文件夹一般是会自动配置为测试文件夹



Sources Root

源码根,存放 .java 等可编译代码(如 src/main/java

Test Sources Root

测试源码根,存放 JUnit 测试类(如 src/test/java

Resources Root

资源根,存放配置(.properties)、静态资源(如图片)

Test Resources Root

测试资源根,存放测试配置文件(如 src/test/resources

Excluded

排除目录,忽略构建输出(如 target)以提升性能

3.  📄 pom文件配置


pom文件,简单来说他的作用:
pom.xml 是 Maven 项目的 “说明书”,用来写清楚项目要啥依赖怎么打包,让大家按统一规矩干活,避免版本混乱和重复操作

pom文件最上方是项目基本信息:

解释标签含义

参数

定义内容

规则 / 说明

示例

groupId

项目组名

反向域名格式

com.yibeigen

artifactId

项目名

小写字母

my-project

version

版本号

三段式:重大升级。新功能.bug 修复

1.2.3

packaging

打包方式

如 jar、war 等

jar

3.1. ⚙️ 中定义一些配置信息

没有的话,就添加进去即可,这里的第二个是java版本,根据自己的java版本来改,我这里是1.8版本的就写1.8, 如果你是jdk11,那就把1.8改成 11 就OK了

<properties>
      <!-- 编码格式 -->
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <!-- 编译时使用的JAVA版本 -->
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
</properties>

3.2. 📦中定义依赖的jar包坐标

因为javaweb项目,所以要用到servlet 和 jsp的jar包,因此就要这两个的坐标

由于项目是web项目,需要写Servlet和JSP,所以需要引入Servlet和JSP的依赖。查找依赖坐标的网站:https://mvnrepository.com/

  1. 搜索Servlet ---> 单击Java Servlet API

2. 里面的版本可以自己选,我选的是3.0.1的
单击进去复制如图的代码即可

往下划一下

  1. 复制到pom文件的 dependencies 标签中,这里先删除最后一个

jsp也是一样的操作,也可以直接复制我写的这个代码,因为都是写死的代码(๑•̀ㅂ•́)و✧

放到pom文件中后,还要让 maven 来做加载
一般在右侧可以打开maven

<!-- 依赖的jar包坐标 -->
  <dependencies>
    <!-- servlet依赖 -->
    <dependency>
    <!-- 项目组名 -->
      <groupId>javax.servlet</groupId>
    <!-- 项目名 -->
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
    </dependency>
    <!-- jsp依赖 -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

为什么之前的web项目中没有引入jsp和servlet的jar包?
因为之前项目中使用的是tomcat中的jsp和servlet中的jar包,在项目中没有引入
我们会用Tomcat插件,而不是完整的Tomcat

3.3. 🔌中定义第三方插件

放在 下  web项目依赖tomcat运行,所以添加 tomcat7插件 ---> 在 maven 中刷新,就会自动下载Tomcat插件了  

<plugins>
  <!-- tomcat插件 -->
  <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.1</version>
    <configuration>
      <port>8080</port>
      <path>/</path>
      <uriEncoding>UTF-8</uriEncoding>
      <server>tomcat7</server>
    </configuration>
  </plugin>
</plugins>

4. ✍️编写代码

接下来编写Servlet和Jsp代码,来通过idea来运行一下

servlet代码
@WebServlet("/demo1")
public class MyServlet extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    // 跳转页面
    req.getRequestDispatcher("hello.jsp").forward(req,resp);
   }
}
jsp代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>大家好,感谢支持艺杯羹!</h1>
</body>
</html>

这样就运行成功了
但是这要每次都输入命令,现在提供一个直接可以运行的配置

单击右上角的当前文件  --->  Edit Configurations……

单击左上角的加号  --->  Maven

填写项目名和执行的命令:tomcat7:run

点击OK后配置完成,点击Idea的运行符号即可使用maven中的tomcat7插件运行项目

5. 🔗依赖范围

上面的运行后,在浏览器访问servlet时,发现报500异常,这是为什么呢?

这是由于项目中引入了 Servlet 和 Jsp 的jar包
而在项目运行时,Tomcat要使用它自带的Servlet和Jsp的jar包,这样就造成了jar包冲突
但如果项目不引入 Servlet 和 Jsp 的 jar 包,则根本无法通过编译。

此时可以设置依赖的作用范围解决该问题,设置Servlet和Jsp的jar包只在编译期起作用,运行时不起作用,这样不仅可以通过编译,还能在运行时避免jar包冲突。

通过在中添加,可以设置依赖的作用范围,有以下取值:

依赖范围

生效阶段

特点 / 典型例子

compile

编译、运行、打包

默认范围,项目打包会包含,如常规业务代码依赖

provided

编译

运行时容器等已提供,无需打包,如 servlet - api

runtime

运行

编译不用,运行需要,如 JDBC 驱动包

test

编译和运行测试代码

正常运行无需,如 JUnit

system

编译、运行(需手动处理)

依赖无 Maven 坐标,本地硬盘引入,不推荐

所以对于Servlet和Jsp依赖,我们在pom.xml中添加依赖范围为provided即可,因为只需要在编译时生效就可以了

注意是放在标签里的

<dependency>
  <groupId>javax.servlet.jsp</groupId>
  <artifactId>jsp-api</artifactId>
  <version>2.2</version>
  <!-- 作用范围 -->
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.0.1</version>
   <!-- 作用范围 -->
  <scope>provided</scope>
</dependency>


配置完后就可以访问了

6. 📝总结

希望本文能够帮助到你(๑•̀ㅂ•́)و✧

目录
相关文章
|
1天前
|
SQL 安全 Java
MyBatis 动态 SQL:让 SQL 语句随条件灵活变化
本文详解MyBatis动态SQL核心标签:`&lt;if&gt;`条件判断、`&lt;where&gt;`智能拼接、`&lt;set&gt;`安全更新、`&lt;choose&gt;`多选一、`&lt;foreach&gt;`遍历集合,结合代码与图示,助你告别硬编码,一个方法搞定多条件查询与批量操作。(239字)
19 0
MyBatis 动态 SQL:让 SQL 语句随条件灵活变化
|
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缓存机制:一级缓存(SqlSession级、默认开启、存对象)与二级缓存(Mapper级、需手动配置、存序列化数据),涵盖原理、配置、清空时机及适用场景,助力高效开发。
22 0
MyBatis 之缓存机制核心解析
|
1天前
|
弹性计算 NoSQL 网络安全
怎么在阿里云计算巢部署 TuGraph 图数据库?如何申请免费试用
TuGraph是蚂蚁集团研发的高性能图数据库,支持万亿级图数据处理与毫秒级复杂查询。现通过阿里云计算巢提供社区版免费试用,一键部署、免运维,含可视化控制台与丰富API,助力快速构建图应用。阿里云计算巢官网:https://t.aliyun.com/U/PEl9rE
29 0
|
1天前
|
数据采集 机器学习/深度学习 人工智能
草莓成熟度目标检测数据集:3类别、2,000张图像 | 目标检测
本数据集含2000张草莓图像,标注未成熟、成熟、过熟三类目标,适配YOLO等模型,覆盖大棚/田间多环境与光照条件,支持智慧采摘、产量预测与品质分级,助力农业视觉AI落地。(239字)
31 0
|
1天前
|
人工智能 C语言
二级C语言题解:十进制转其他进制、非素数求和、重复数统计
本文详解三类经典编程题:十进制转任意进制(填空)、非素数求和(修改)与重复数字统计(设计),含完整代码、逐空分析及易错点解析,助你夯实C语言基础。
23 2
二级C语言题解:十进制转其他进制、非素数求和、重复数统计
|
1天前
|
C语言 数据安全/隐私保护
二级C语言题解:二维数组每行最大值与首元素交换、删除结构体的重复项、取出单词首字母
本教程专为C语言二级考生、中职学生及编程初学者设计,涵盖三大核心题型:二维数组每行最大值与首元素交换、结构体重复项删除(保留首个)、字符串单词首字母提取。含详细分析、易错点解析与标准代码,助你夯实基础、提升解题思维。
31 2
二级C语言题解:二维数组每行最大值与首元素交换、删除结构体的重复项、取出单词首字母
|
1天前
|
SQL Java 数据库连接
MyBatis 之基础概念与框架原理详解
MyBatis是一款轻量级半自动ORM框架,封装JDBC,让开发者专注SQL编写与业务逻辑;支持XML/注解配置、动态SQL、高级映射,SQL与代码分离,灵活高效,显著提升持久层开发效率。(239字)
29 1
MyBatis 之基础概念与框架原理详解
|
1天前
|
存储 C语言
二级C语言题解:整数序列奇偶个数、拼接数字字符、数组取偶数并加小数点
本文详解C语言三道经典编程题:①统计整数序列中奇偶数个数并返回结构体;②提取字符串中数字字符拼接成整数;③筛选数组偶数并按原序拼接为“数字.”格式字符串。含完整代码、填空/修改/设计解析及易错点提醒。
26 1
二级C语言题解:整数序列奇偶个数、拼接数字字符、数组取偶数并加小数点
|
1天前
|
Java 程序员 应用服务中间件
Maven之初识与安装
本文详解Maven安装与配置全流程:从基础概念、下载安装、环境变量配置到版本验证,助新手一次理清逻辑、顺利完成部署;涵盖一键构建、依赖管理核心功能,并提供交流支持。
29 0
Maven之初识与安装

热门文章

最新文章