【MAVEN学习 | 第2篇】Maven工程创建及核心功能

在这里插入图片描述

文章目录

    • 一. 基于IDEA的Maven工程创建
      • 1.1 Maven工程GAVP属性
        • (1)GroupID 格式
        • (2)ArtifactID 格式
        • (3)Version版本号格式
        • (4)Packaging定义规则
      • 1.2 IDEA构建Maven JavaSE工程
      • 1.3 IDEA构建Maven JavaEE工程
        • (1)手动创建
        • (2)插件方式创建(推荐)
    • 二. Maven 核心功能:功能依赖和构建管理
      • 2.1 依赖管理和配置
      • 2.2 依赖冲突
      • 2.3 依赖导入失败解决方法
      • 2.4 构建管理和插件配置
        • (1)构建
        • (2)构建生命周期

一. 基于IDEA的Maven工程创建

1.1 Maven工程GAVP属性

Maven工程有一组gavp属性,gav需要在创建项目的时指定,p有默认值,后期可通过配置文件修改。

G:GroupId
A:ArtifactId
V:Version
P:Packaging
前三个是必要的,而 Packaging 属性为可选项。

(1)GroupID 格式

com.{公司/BU }.业务线.[子业务线],最多 4 级

	例:com.taobao.tddl 或 com.alibaba.sourcing.multilang 
(2)ArtifactID 格式

产品线名-模块名。语义不重复不遗漏,先到仓库中心去查证一下。

	例:tc-client / uic-api / tair-tool / bookstore
(3)Version版本号格式

主版本号.次版本号.修订号 1.0.0

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

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

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

    例: 初始→1.0.0  修改bug → 1.0.1  功能调整 → 1.1.1等
(4)Packaging定义规则

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

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

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

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

1.2 IDEA构建Maven JavaSE工程

在这里插入图片描述
注:此处version是一个默认值1.0-SNAPSHOT,自己后期可以在项目中修改!

1.3 IDEA构建Maven JavaEE工程

(1)手动创建
  • 根据上面的步骤创建一个 Maven JavaSE 工程

  • 手动添加Web项目结构文件(结构和命名固定
    在这里插入图片描述

  • 修改pom.xml文件打包方式

    <!-- 在pom.xml文件中修改 <packaging> -->
    <packaging>war</packaging>
    
  • 刷新和校验
    在这里插入图片描述
    项目的webapp文件夹出现小蓝点,代表成功!!

(2)插件方式创建(推荐)
  • 安装插件JBLJavaToWeb
    在这里插入图片描述
    在这里插入图片描述若没有 install 则点击安装

  • 创建一个 Maven JavaSE 工程

  • 右键、使用插件补全web项目
    在这里插入图片描述

二. Maven 核心功能:功能依赖和构建管理

2.1 依赖管理和配置

定义 POM 文件,Maven 能够自动解析项目的依赖关系,并通过 Maven 仓库自动下载和管理依赖,从而避免了手动下载可能引发的版本冲突问题。

  • maven项目信息属性配置和读取:GAVP属性
  • 依赖管理和添加:
    <dependencies>
    <!-- 引入具体的依赖包 -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
        <!--
            生效范围
            - compile :main目录 test目录  
            - provided:main目录 test目录 
            - runtime: 打包运行          
            - test:    test目录          
         -->
        <scope>runtime</scope>
    </dependency>
    </dependencies>
    
  • 依赖版本提取和维护:
    <!--声明版本-->
    <properties>
      <!--内部制定版本号-->
      <junit.version>4.11</junit.version>
    </properties>
    
    <dependencies>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <!--引用properties声明版本 -->
        <version>${junit.version}</version>
      </dependency>
    </dependencies>
    

2.2 依赖冲突

当直接引用或者间接引用出现了相同的jar包! 这时呢,一个项目就会出现相同的重复jar包,这就算作冲突!

在这里插入图片描述

  • 解决依赖冲突方式:
    • 短路优先原则(第一原则)

        A—>B—>C—>D—>E—>X(version 0.0.1)
      
        A—>F—>X(version 0.0.2)
      
        则A依赖于X(version 0.0.2)。
      
    • 依赖路径长度相同情况下,则“先声明优先”(第二原则)

        A—>E—>X(version 0.0.1)
      
        A—>F—>X(version 0.0.2)
      
        在<depencies></depencies>中,先声明的,路径相同,会优先选择!
      

2.3 依赖导入失败解决方法

(1)检查网络连接和 Maven 仓库服务器状态。
(2)确保依赖项的版本号与项目对应的版本号匹配,并检查 POM 文件中的依赖项是否正确。
(3)清除本地 Maven 仓库缓存(lastUpdated 文件),因为只要存在lastupdated缓存文件,刷新也不会重新下载。 ——》 直接在本地仓库中搜索以 .lastUpdated 结尾的文件,删除即可!

2.4 构建管理和插件配置

(1)构建
  • 项目构建是指将源代码、依赖库和资源文件等转换成可执行或可部署的应用程序的过程
(2)构建生命周期
打包: mvn clean package
重新编译: mvn clean compile
本地部署: mvn clean install 

最终进行构建的是插件,插件配置

<build>
   <!-- jdk17 和 war包版本插件不匹配 -->
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.2</version>
        </plugin>
    </plugins>
</build>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/751517.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kettle使用手册 安装9.0版本 建议设置为英语

0.新建转换的常用组件 0. Generate rows 定义一个字符串 name value就是字符串的值 0.1 String operations 字段转大写 去空格 1. Json input 来源于一个json文件 1.json 或mq接收到的data内容是json字符串 2. Json output 定义Jsonbloc值为 data, 左侧Fieldname是数据库…

VS2022(Visual Studio 2022)最新安装教程

1、下载 1、下载地址 - 官网地址&#xff1a;下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux - 根据自己的电脑的 【操作系统】 灵活选择。 2、安装包 【此处为Windows系统安装包】 2、安装 1、打开软件 - 右击【以管理员身份打开】&#xff0c; 2、准备配置 …

昇思25天学习打卡营第03天|张量Tensor

何为张量&#xff1f; 张量&#xff08;Tensor&#xff09;是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数&#xff0c;这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 &#x1d45b;维空间内&#xff0c;有  &#x1d45b;&a…

机器人控制系列教程之URDF文件语法介绍

前两期推文&#xff1a;机器人控制系列教程之动力学建模(1)、机器人控制系列教程之动力学建模(2)&#xff0c;我们主要从数学的角度介绍了机器人的动力学建模的方式&#xff0c;随着机器人技术的不断发展&#xff0c;机器人建模成为了机器人系统设计中的一项关键任务。URDF&…

聚合项目学习

首先建立一个总的工程目录&#xff0c;里边后期会有我们的父工程、基础工程(继承父工程)、业务工程&#xff08;依赖基础工程&#xff09;等模块 1、在总工程目录中&#xff08;open一个空的文件夹&#xff09;&#xff0c;首先建立一个父工程模块&#xff08;通过spring init…

地铁中的CAN通信--地铁高效安全运转原理

目前地铁采用了自动化的技术来实现控制,有ATC(列车自动控制)系统可以实现列车自动驾驶、自动跟踪、自动调度;SCADA(供电系统管理自动化)系统可以实现主变电所、牵引变电所、降压变电所设备系统的遥控、遥信、遥测;BAS(环境监控系统)和FAS(火灾报警系统)可以实现车站…

AS-V1000外部设备管理介绍(国标GB28181设备管理,可以管理的国标设备包括DVR/NVR、IPC、第三方国标28181平台)

目录 一、概述 1、视频监控平台介绍 2、外部设备定义&#xff08;接入的国标设备&#xff09; 二、外部设备管理 2.1 外部设备添加 &#xff08;1&#xff09;设备侧的配置 &#xff08;2&#xff09;平台侧的配置 2.2 外部设备信息的修改 三、外部通道管理 3.1 外部…

【技术追踪】SDSeg:医学图像的 Stable Diffusion 分割(MICCAI-2024)

这医学图像分割领域啊&#xff0c;终究还是被 Stable Diffusion 闯进去了~ SDSeg&#xff1a;第一个基于 Stable Diffusion 的 latent 扩散医学图像分割模型&#xff0c;在五个不同医学影像模态的基准数据集上超越了现有的最先进方法~ 论文&#xff1a;Stable Diffusion Segmen…

当设备树中出现多个同一节点的处理办法

当设备树中出现多个同一节点的处理办法 1.同一文件下有多个节点不同设备树调用同一节点需要#include "xxx.dtsi"3,vscode快速搜索文件 ctrlshiftp 去掉> 1.同一文件下有多个节点 覆盖规则&#xff1a; 同一层次的节点&#xff0c;后面的会覆盖前面的节点 memory…

如何在浏览器中查看网页的HTML源代码?

如何在浏览器中查看网页的HTML源代码&#xff1f; 浏览html网页&#xff0c;查看其源代码&#xff0c;可以帮助我们了解该版网页的信息以及架构&#xff0c;每个浏览器都是允许用户查看他们访问的任何网页的HTML源代码的。以下编程狮小师妹就介绍几个常见浏览器的查看网页 HTM…

STL中的迭代器模式:将算法与数据结构分离

目录 1.概述 2.容器类 2.1.序列容器 2.2.关联容器 2.3.容器适配器 2.4.数组 3.迭代器 4.重用标准迭代器 5.总结 1.概述 在之前&#xff0c;我们讲了迭代器设计模式&#xff0c;分析了它的结构、角色以及优缺点&#xff1a; 设计模式之迭代器模式-CSDN博客 在 STL 中&a…

Jenkins教程-10-发送飞书测试报告通知

上一小节我们学习了发送企业微信测试报告通知的方法&#xff0c;本小节我们讲解一下发送飞书测试报告通知的方法。 1、自动化用例执行完后&#xff0c;使用pytest_terminal_summary钩子函数收集测试结果&#xff0c;存入本地status.txt文件中&#xff0c;供Jenkins调用 conft…

“山寨版”《草料二维码》

背景 之前浏览过草料二维码的网站&#xff0c;他的二维码美化功能很强大&#x1f4aa;&#xff0c;可以分别自定义码眼和码点的形状和颜色&#xff01; 碰巧之前写过一个 npm 插件 qrcode-with-logos, 用于前端生成带 logo 的二维码。 而且在 github 的 issues 里有外国友人…

【Echarts】散点图 制作 气泡 类型图表

目录 需求主要代码效果展示注 需求 需参照设计图画出对应图表 主要代码 /**** 数据 ****/ this.dataList [...Array(8).keys()].map((item) > {return {ywlxmc: 业务类型 (item 1),sl: item > 4 ? 50 : 70} })/**** 气泡样式 ****/ const styleList [{offset: [56…

13 Redis-- MySQL 和 Redis 的数据一致性

Redis-- MySQL 和 Redis 的数据一致性 先抛一下结论&#xff1a;在满足实时性的条件下&#xff0c;不存在两者完全保存一致的方案&#xff0c;只有最终一致性方案。 不好的方案&#xff1a;先写 MS&#xff0c;再写 Redis 例如 &#xff1a;A请求更新数据为10&#xff0c;B…

第六十九:iview 表格汇总怎么拿到传过来的数据,而不是自动累加,需要自定义方法

话不多少&#xff0c;先看官方解释 我这个简单&#xff0c;所以所有说明都在图上了 handleSummary({ columns, data }){console.log(columns, data)let sums {}columns.forEach((item,index)>{const key item.key;console.log("key",item)if(index 0){console.…

C语言基础笔记(全)

一、数据类型 数据的输入输出 1.数据类型 常量变量 1.1 数据类型 1.2 常量 程序运行中值不发生变化的量&#xff0c;常量又可分为整型、实型(也称浮点型)、字符型和字符串型 1.3 变量 变量代表内存中具有特定属性的存储单元&#xff0c;用来存放数据&#xff0c;即变量的值&a…

SAP 免费退货销售订单类型配置简介

作为一名 SD顾问&#xff0c;必须具备熟悉系统和系统配置&#xff0c;但是之前都是做的PP顾问&#xff0c;现在用户需要新增了一个销售订单类型&#xff0c;所以自己研究销售订单类型的配置&#xff0c;才有了以下的文章&#xff0c;希望对各位学习的同学有所帮助 1、创建销售…

qmt量化交易策略小白学习笔记第52期【qmt编程之商品期货数据】

qmt编程之获取商品期货数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 主力合约生成规则 每个品种只有一个主连合约。主连合约于下一个交易日进行指向切换&#xff0c;切换前主连合约不变…

【Python】已解决:TypeError: a bytes-like object is required, not ‘int’

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;TypeError: a bytes-like object is required, not ‘int’ 一、分析问题背景 在使用Python进行文件操作或处理二进制数据时&#xff0c;开发者可能会遇到如下错…