JavaWeb(六)

本文详细介绍了Maven中的常用命令,包括compile(编译)、clean(清理)、test(测试)、package(打包)和install(安装),以及它们之间的关系和Maven默认生命周期的工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Maven坐标的含义

Maven的坐标用于描述仓库中资源的位置。

Maven 坐标主要组成

groupId:定义当前Maven项目隶属组织名称通常是域名反写,例如:com.itboy)

artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)

version:定义当前项目版本号,其中SNAPSHO表示开发中的版本,release表示发布的版本

二、标准maven项目的结构

2.1、标准maven项目的结构

        标准Maven项目的结构是在src目录下同时存在main文件夹和test文件夹,其中在maintest文件夹下又同时存在java包和resources

2.2、手动设置java包和resources 

三、依赖传递和依赖冲突

3.1、依赖传递

        我们在project1中引入了project2,这样就会把project2所有的依赖都引入到project1中,我们称为依赖传递

         但是现在project1project2同时引入了junit,并且版本还不一样,此时就会造成依赖冲突,

根据依赖层级关系,我们可以看到project1中是以自身的junit版本为标准。依赖层级下面有介绍。

        所以凡是项目中引入了其他项目的依赖,都会把其他项目的所有依赖导入到本项目,遇到相同jar包时,以本项目的版本为准。

3.2、直接依赖和间接依赖

这种在maven的pom.xml直接引入的依赖我们称为直接依赖,可以把依赖层级看为1级

3.3、间接依赖 

org.hamcrest:hamcrest-core:1.3jar包是通过junit依赖传递引入的,我们称为间接依赖,并且可以它的依赖层级看为2级

四、Maven的常用命令

4.1、maven插件的作用

        maven会内置clean、compile、install等插件,这些插件在创建好maven项目就会存在,不用额外手动创建,这些插件是用来执行maven对应生命周期的

maven的常用命令有:compile(编译)、clean(清理)、test(测试)、package(打包)、install(安装)。

4.2、compile(编译)

compile(编译)的作用有如下两点:

1、从阿里云下载编译需要的jar包,在本地仓库也能看到下载好的插件(远程仓库配置的是阿里云就会从阿里云下载)。

2、主要作用是第2点,会在项目下生成一个 target 目录,并将src/main/java下的源文件编译为class文件输出到target目录下。

4.3、clean(清理)

clean(清理)的作用有如下两点:

  1. 从阿里云下载清理需要的jar包。(compile是下载编译需要的jar包,clean是下载清理需要的jar包)
  2. 删除项目下的 target 目录。(删除1.1中通过compile生成的target目录)

4.4、package(打包)

package(打包)的作用有如下两点:

  1. 从阿里云下载打包需要的jar包。
  2. 将当前项目打成jar包,并保存到target 目录下本地的target目录也会保存这个jar包。

项目中target目录下的jar包

本地的target目录下的jar包

注意:执行package命令首先会去执行compile命令,可以看见“项目中target目录下的jar包”这个图片中target目录下生成了classes文件夹,说明生成了class文件。

4.5、install(安装)

install(安装)的作用有如下两点:

1、从阿里云下载安装需要的jar包。 

2、将当前项目打成jar包,并保存到target 目录下本地的target目录也会保存这个jar包。同时会保存到本地仓库。

与命令package的唯一区别就是会保存到本地仓库。

注意:

  1. 执行install命令首先会去执行compile命令,再去执行package命令,最后再去执行install命令。
  2. 使用clean清除命令只会清除target目录,所以使用install命令在本地仓库生成的jar包并不会清除。

五、Maven 生命周期

同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。例如默认(default)生命周期如下:

当我们执行 install(安装)命令时,它会先执行compile命令,再执行 test 命令,再执行package命令,最后执行 install 命令。

当我们执行package (打包)命令时,它会先执行 compile 命令再执行 test 命令,最后执行 package 命令。

六、 maven的聚合工程

        6.1、dependencyManagement标签的作用

        聚合工程一般又是父工程,起着统一管理项目版本的作用,聚合工程不参与打包操作,所以<packaging>pom</packaging>中设置为pom,其中modules标签里面设置了管理的子工程

        dependencyManagement标签里面的依赖不会被子模块强制下载,子模块需要依赖还是要在子模块中导入依赖。

        dependencyManagement标签配合properties标签可以控制依赖的版本

6.2、plugins标签的作用

plugins标签就是用来下载相关插件的,如果在父模块中下载了相应标签,会被继承到子模块

七、 子模块中的继承

父模块中的聚合,就有子模块中的继承,二者是相辅相成的。

parent标签中可以指定父模块的信息,然后自身的标签中可以去除对应的groupId和version

因为需要和父模块保持一致

并且这里没有指定<packaging></packaging>标签,默认就是打jar包

使用聚合模块子模块的继承实际上就是保持版本的一致性,不要想那么复杂

子模块中引入了依赖后不用去标注父模块中已经指定了版本号的依赖

 继承项目和直接引入其他项目的区别

A模块继承了B模块并且直接依赖C模块之间的区别:

A模块继承了B模块,所以B模块是A模块的父模块,B模块对依赖起着版本控制的作用

A模块直接依赖C模块,那么C模块所有的依赖都会被导入到A模块中,C中有A种没有的依赖没有版本冲突,A中有C中也有的依赖,按照依赖层级以A模块的为准

八、resources标签的作用

build标签下面的resources标签是对资源文件的控制,假设package.environment=dev

下面就是对src/main/resources/dev文件夹下面的文件进行的操作

九、profiles标签的作用

        Profiles标签是用来指定环境的,可以看见Profiles标签里面的环境和右边maven里面的内容相对应

        其中activeByDefault标签用来指定对应的环境,下面表示指定dev环境

### JavaWeb章 教程与资料 #### JSP 技术概述 JSP (JavaServer Pages) 是一种用于创建动态 Web 页面的技术,它允许开发人员将静态 HTML 和可执行的 Java 代码混合在一起。这种特性使得 JSP 成为了构建交互式网站的理想选择[^1]。 #### 过滤器和监听器的概念 Servlet 过滤器是在请求到达 Servlet 或者响应返回给客户端之前处理这些数据的对象;而监听器则可以监控特定类型的事件并作出反应。具体来说,在 JavaWeb 中定义了三种主要的监听器类型:`ServletContext` 事件监听器、`HttpSession` 事件监听器以及 `ServletRequest` 事件监听器[^4]。 #### 实战案例分析 对于实际项目而言,当涉及到会话管理时,并不需要每次都手动引入外部库文件如 `servlet-api.jar` ,因为某些预配置好的工程模板(例如名为 chapter05 的例子)已经包含了必要的依赖项[^3]。 ```java // 示例:简单的过滤器类实现 import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class SimpleFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException {} @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("Before processing..."); chain.doFilter(request, response); System.out.println("After processing..."); } @Override public void destroy() {} } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值