SSM框架,Maven的学习(上)

Maven 是一款为 Java 项目构建管理、依赖管理的工具(软件),使用 Maven 可以自动化构建、测试、打包和发布项目,大大提高了开发效率和质量。

Maven的作用

  1. 依赖管理:

    Maven 可以管理项目的依赖,包括自动下载所需依赖库、自动下载依赖需要的依赖并且保证版本没有冲突、依赖版本管理等。通过 Maven,我们可以方便地维护项目所依赖的外部库,而我们仅仅需要编写配置即可。

  2. 构建管理:

    项目构建是指将源代码、配置文件、资源文件等转化为能够运行或部署的应用程序或库的过程

    Maven 可以管理项目的编译、测试、打包、部署等构建过程。通过实现标准的构建生命周期,Maven 可以确保每一个构建过程都遵循同样的规则和最佳实践。同时,Maven 的插件机制也使得开发者可以对构建过程进行扩展和定制。主动触发构建,只需要简单的命令操作。

Maven的GAVP属性

Maven 中的 GAVP 是指 GroupId、ArtifactId、Version、Packaging 等四个属性的缩写,其中前三个是必要的,而 Packaging 属性为可选项。这四个属性主要为每个项目在maven仓库总做一个标识,有了具体标识,方便maven软件对项目进行管理和互相引用

GAV遵循一下规则:

GroupID 格式 :com.{公司/BU }.业务线.[子业务线],最多 4 级。

例:com.taobao.tddl 或 com.alibaba.sourcing.multilang com.atguigu.java

ArtifactID 格式 :产品线名-模块名

例:tc-client / uic-api / tair-tool / bookstore

Version版本号格式 :主版本号.次版本号.修订号

主版本号:当做了不兼容的 API 修改,或者增加了能改变产品方向的新功能。

次版本号:当做了向下兼容的功能性新增(新增类、接口等)。

修订号:修复 bug,没有修改方法签名的功能加强,保持 API 兼容性。

例: 初始→1.0.0 修改bug → 1.0.1 功能调整 → 1.1.1等

Packaging定义规则:

指示将项目打包为什么类型的文件,idea根据packaging值,识别maven项目类型。

packaging 属性为 jar(默认值),代表普通的Java工程,打包以后是.jar结尾的文件。

packaging 属性为 war,代表Java的web工程,打包以后.war结尾的文件。

packaging 属性为 pom,代表不会打包,用来做继承的父工程。

创建web工程

手动创建

① 创建一个Javase maven工程

②补全文件结构

  • main
    • webapp
      • WEB-INF
        • web.xml

③在pom.xml中配置packaging为war

④最后刷新,当webapp的图标多了一个蓝色的点即可

插件创建

①安装JBL插件

②创建一个Javase maven工程

③选择模块后右键,选择JBLJavaToWeb

Maven工程项目结构

|-- pom.xml                               # Maven 项目管理文件 
|-- src
    |-- main                              # 项目主要代码
    |   |-- java                          # Java 源代码目录
    |   |   `-- com/example/myapp         # 开发者代码主目录
    |   |       |-- controller            # 存放 Controller 层代码的目录
    |   |       |-- service               # 存放 Service 层代码的目录
    |   |       |-- dao                   # 存放 DAO 层代码的目录
    |   |       `-- model                 # 存放数据模型的目录
    |   |-- resources                     # 资源目录,存放配置文件、静态资源等
    |   |   |-- log4j.properties          # 日志配置文件
    |   |   |-- spring-mybatis.xml        # Spring Mybatis 配置文件
    |   |   `-- static                    # 存放静态资源的目录
    |   |       |-- css                   # 存放 CSS 文件的目录
    |   |       |-- js                    # 存放 JavaScript 文件的目录
    |   |       `-- images                # 存放图片资源的目录
    |   `-- webapp                        # 存放 WEB 相关配置和资源
    |       |-- WEB-INF                   # 存放 WEB 应用配置文件
    |       |   |-- web.xml               # Web 应用的部署描述文件
    |       |   `-- classes               # 存放编译后的 class 文件
    |       `-- index.html                # Web 应用入口页面
    `-- test                              # 项目测试代码
        |-- java                          # 单元测试目录
        `-- resources                     # 测试资源目录
  • pom.xml:Maven 项目管理文件,用于描述项目的依赖和构建配置等信息。
  • src/main/java:存放项目的 Java 源代码。
  • src/main/resources:存放项目的资源文件,如配置文件、静态资源等。
  • src/main/webapp/WEB-INF:存放 Web 应用的配置文件。
  • src/main/webapp/index.html:Web 应用的入口页面。
  • src/test/java:存放项目的测试代码。
  • src/test/resources:存放测试相关的资源文件,如测试配置文件等。

Maven依赖管理

Maven依赖管理在pom.xml文件中操作:

dependencies标签 -项目依赖集合,里面有着各个dependency标签

dependency标签 -每个依赖项

每个dependency中的gav标签 -依赖的信息就是其他Maven的工程,这些gav其实是依赖的gav属性

例:

XML 复制代码
<dependencies>

  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.15.2</version>
  </dependency>

  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
  </dependency>

</dependencies>

获取依赖的gav信息的方式

官网查询

https://mvnrepository.com/

找到具体的依赖,选择Maven后将gav属性复制即可

maven插件

使用maven-search插件,使用tools选项里面的maven-search输入依赖名后复制gav信息即可

dependency标签的scope属性

scope属性可以指定依赖的生效范围,在dependency中写入scope标签,在标签中指定范围即可

范围:

compile:在main目录和test目录中使用,表明此依赖参与项目的编译、测试、运行阶段,在打包后包含此依赖

provided:在main目录和test目录使用,表明此依赖仅参与项目的编译、测试阶段

runtime:不会在main和test目录中使用,表明此依赖仅参与项目的运行阶段

test:在test目录中使用,表明此依赖仅参与项目的测试阶段

例:

XML 复制代码
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<!--指定依赖生效的范围-->
<scope>runtime</scope>
</dependency>

引用声明版本

可以对依赖的版本进行统一管理,在properties中声明版本,然后在dependency的version标签中使用${版本名}即可

XML 复制代码
<!--声明版本-->
<properties>
<!--命名随便,内部制定版本号即可!-->
<junit.version>4.11</junit.version>
<!-- 也可以通过 maven规定的固定的key,配置maven的参数!如下配置编码格式!-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<!--引用properties声明版本 -->
<version>${junit.version}</version>
</dependency>
</dependencies>
相关推荐
一只淡水鱼661 分钟前
【mybatis】基本操作:详解Spring通过注解和XML的方式来操作mybatis
java·数据库·spring·mybatis
唐叔在学习18 分钟前
【唐叔学算法】第19天:交换排序-冒泡排序与快速排序的深度解析及Java实现
java·算法·排序算法
music0ant22 分钟前
Idea 配置环境 更改Maven设置
java·maven·intellij-idea
记得开心一点嘛37 分钟前
Nginx与Tomcat之间的关系
java·nginx·tomcat
界面开发小八哥1 小时前
「Java EE开发指南」如何用MyEclipse构建一个Web项目?(一)
java·前端·ide·java-ee·myeclipse
王伯爵1 小时前
<packaging>jar</packaging>和<packaging>pom</packaging>的区别
java·pycharm·jar
Q_19284999061 小时前
基于Spring Boot的个人健康管理系统
java·spring boot·后端
m0_748245172 小时前
Web第一次作业
java
小码的头发丝、2 小时前
Java进阶学习笔记|面向对象
java·笔记·学习
m0_548514772 小时前
前端Pako.js 压缩解压库 与 Java 的 zlib 压缩与解压 的互通实现
java·前端·javascript