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

目录

[1. 🧩Maven插件](#1. 🧩Maven插件)

[2. 🏗️构建Maven工程](#2. 🏗️构建Maven工程)

[3. 📄 pom文件配置](#3. 📄 pom文件配置)

[​3.1. ⚙️ ​ 中定义一些配置信息](#3.1. ⚙️ 中定义一些配置信息)

[​3.2. 📦 ​中定义依赖的jar包坐标](#3.2. 📦 中定义依赖的jar包坐标)

[​3.3. 🔌 ​中定义第三方插件](#3.3. 🔌 中定义第三方插件)

[​4. ✍️编写代码](#4. ✍️编写代码)

[5. 🔗依赖范围](#5. 🔗依赖范围)

[6. 📝总结](#6. 📝总结)


💡【开发哲学共勉】

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. ⚙️<properties>​ 中定义一些配置信息

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

XML 复制代码
<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. 📦<dependencies>​中定义依赖的jar包坐标

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

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

  1. 搜索Servlet ---> 单击Java Servlet API
  1. 里面的版本可以自己选,我选的是3.0.1的

单击进去复制如图的代码即可

往下划一下

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

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

放到pom文件中后,还要让 maven 来做加载

一般在右侧可以打开maven

XML 复制代码
<!-- 依赖的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. 🔌<plugins>​中定义第三方插件

放在 <build> ​下

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

XML 复制代码
<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来运行一下

XML 复制代码
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包冲突。

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

依赖范围 生效阶段 特点 / 典型例子
compile 编译、运行、打包 默认范围,项目打包会包含,如常规业务代码依赖
provided 编译 运行时容器等已提供,无需打包,如 servlet - api
runtime 运行 编译不用,运行需要,如 JDBC 驱动包
test 编译和运行测试代码 正常运行无需,如 JUnit
system 编译、运行(需手动处理) 依赖无 Maven 坐标,本地硬盘引入,不推荐

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

注意是放在<dependencies>​标签里的

XML 复制代码
<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. 📝总结

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

相关推荐
越来越无动于衷4 小时前
Tomcat本地部署Maven Java Web项目
java·tomcat·maven
Niloofar1 天前
SpringBootWeb请求响应
java·maven
二宝哥1 天前
maven命令安装jar包到本地仓库
java·maven·jar
forestsea3 天前
Maven多模块项目架构设计:聚合、继承与依赖治理
java·maven
码码不爱我4 天前
报错:Maven无法解析插件 org.apache.maven.plugins:maven-surefire-plugin:3.0.0
java·数据库·maven
暮 夏4 天前
部署Maven Java Web项目
java·tomcat·maven·intellij-idea
aini_lovee4 天前
在IntelliJ IDEA中使用Maven配置Tomcat环境
tomcat·maven·intellij-idea
2401_837088505 天前
Maven在依赖管理工具方面的内容
java·maven
艺杯羹6 天前
Maven之初识与安装
java·maven·maven配置