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

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属性

例:

<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目录中使用,表明此依赖仅参与项目的测试阶段

例:

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

引用声明版本

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

<!--声明版本-->
<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>


http://www.kler.cn/a/232322.html

相关文章:

  • 【C语言】实现二维数组按列排序
  • Qt主线程把数据发给子线程,主线程会阻塞吗
  • 写给初学者的React Native 全栈开发实战班
  • 卷积神经网络之Yolo详解
  • 【PHP】ThinkPHP基础
  • react 中 useContext Hook 作用
  • Mybatis中的sql-xml延迟加载机制
  • DBeaver连接mysql时报错com.mysql.cj.jdbc.Driver的解决方法【修改驱动下载的maven地址和重新下载驱动】
  • 从github上拉取项目到pycharm中
  • 【数据分享】1929-2023年全球站点的逐月平均能见度(Shp\Excel\免费获取)
  • C++ “万能血“ void*指针
  • 一篇文章理解时间复杂度和空间复杂度
  • wyh的迷宫
  • Linux基础入门
  • 相机图像质量研究(9)常见问题总结:光学结构对成像的影响--工厂镜头组装
  • Ubuntu搭建计算集群
  • Redis篇之分布式锁
  • STM32——LCD(1)认识
  • ResizeObserver的使用
  • 网络编程-Socket套接字
  • Netty源码系列 之 HashedWheelTimer源码
  • 《幻兽帕鲁》攻略:0基础入门及游戏基础操作 幻兽帕鲁基础设施 幻兽帕鲁基础攻击力 Mac苹果电脑玩幻兽帕鲁 幻兽帕鲁加班加点
  • Kubernetes基础(十五)-k8s网络通信
  • ubuntu22.04@laptop OpenCV Get Started: 001_reading_displaying_write_image
  • 如何使用宝塔面板搭建MySQL 5.5数据库并实现公网远程连接
  • C++ pair 的使用