当前位置: 首页 > news >正文

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

目录

1. 🧩Maven插件

2. 🏗️构建Maven工程

3.  📄 pom文件配置

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

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

​3.3. 🔌 ​中定义第三方插件

​4. ✍️编写代码

5. 🔗依赖范围

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了

<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

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

往下划一下

3. 复制到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. 🔌<plugins>​中定义第三方插件

放在 <build> ​下
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 {@Overrideprotected 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>​标签里的

<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. 📝总结

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

相关文章:

  • 掌握Bash脚本编写:从服务启动脚本到语法精要
  • Tomcat双击startup.bat闪退的解决方法
  • 【Python进阶系列】第9篇:聊聊 Python 中常用的第三方库
  • Nacos Server 界面
  • JetBrains IDE v2025.1 升级,AI 智能+语言支持齐飞
  • 解决 Conda 玑境激活问题:缺少 `bin/activate` 文件的应对方法
  • 以太坊节点搭建私链(POA)
  • 【Mini-F5265-OB开发板试用测评】3、MDS 可编程 IP 互联模块
  • WebServer实现:muduo库的主丛Reactor架构
  • 高并发秒杀系统实战(Redis+Lua分布式锁防超卖与库存扣减优化)
  • JVM对象内存分配机制全解析
  • PCB板高速飞拍检测系统 助力电子制造自动化领域
  • 如何导出和迁移离线 Conda 环境
  • Cisco Nexus93240接口带宽显示异常高故障- bug
  • 【目标检测】什么是目标检测?应用场景与基本流程
  • [持续集成]
  • 【案例】性能优化在持续集成与持续交付中的应用
  • element-ui使用el-button去掉focus,删除el-button的focus效果
  • 魔音音乐 5.0.2 | 无损下载 同步网易云歌单UI美观
  • 数据分析对比图表-雷达图全面指南
  • 不买服务器做网站/百度seo优化
  • 网站建好了怎么做/公司推广网站
  • 运城建网站/广东省广州市佛山市
  • 设计网站特点/关键词推广软件
  • 中国纪检监察网站奶奶做女工/沈阳网站关键词优化公司
  • 传媒有限公司/百度seo快速见效方法