Maven 自动化构建
优质博文:IT-BLOG-CN
一、Maven:是一款服务于 Java平台的自动化构建工具
【1】Maven可以将一个项目按模块划分成不同的工程,利于分工协作;
【2】Maven可以将 jar包保存在自己的中央“仓库”中进行统一管理,有需要使用的工程引用这个文件接口即可,不需要真的将 ja包复制过来(解决同样的 jar包文件重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿);
【3】可以自动导入依赖的相关jar包,之前需要自己手动导入相关 jar包;
【4】Tip:如下表示运行时环境,主要存储 String等类似对象,其实只是一组 jar包的引用;

二、安装 Maven:配置环境变量即可
【1】创建 MAVNE_HOME环境变量

【2】在 path 中添加 Maven 的 bin 目录:验证(mvn -v)命令查看 maven 版本

三、自定义Maven仓库
修改解压目录下的conf/setting.xml文件:

四、命令
【1】maven compile:编译main文件,生成class文件位于 target 目录中。
【2】maven package:对主程序进行打包,生成文件在 target 目录中。
【3】maven clean:清理 target 目录下文件。
POM:project object model 项目对象模型。对于 Maven 工程是核心配置文件,与构建过程相关的一切设置都是在这个文件中进行设置。
五、坐标:使用下面三个向量在仓库中唯一定位一个Maven工程
【1】groupid: 公司或组织域名倒序+项目名
【2】artifactid: 模块名称Hello
【3】version: 版本
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.0.RELEASE</version>
【定位的文件】:org/springframework/spring-core/4.0.0.RELEASE/spring-core-4.0.0.RELEASE.jar
六、 仓库的分类
【1】本地仓库:当前电脑上部署的仓库目录,为当前电脑上所有的Maven工程服务。
【2】远程仓库:①、私服:搭建在当前局域网下,为当前局域网网范围内的所有Maven工程服务。②、中央仓库:架设在Internet上,为全世界所有Maven工程服务。③、中央仓库的镜像:为了分担中央仓库的压力,提升用户访问的速度。
七、依赖:Maven解析依赖信息时,会到本地仓库中找被依赖的jar包。
对于我们开发的工程需要使用 install 命令安装后就可以进入仓库,生成 jar 包等文件。
<dependency><groupId>com.shidaiyintong</groupId><artifactId>Hello</artifactId><version>0.0.1-SNAPSHOT</version><scope>compile</scope>
</dependency>
依赖具有传递性: 当父类依赖了 jar 包后,子类 Maven Dependencies 也会自动添加,但非 compile 范围的 jar 包不能传递。
依赖的排除性:使用 exlutions 标签
<exclusions><exclution><groupId>xxxx</groupId><artifactId>xxx</artifactId></exclution>
</exclutions>
<exclusions><exclution><groupId>xxxx</groupId><artifactId>xxx</artifactId></exclution>
</exclutions>
依赖的原则: 解决 jar 包冲突问题,就近原则。相同路径取先声明者优先,指 dependency标签的声明顺序。
依赖的范围:
【1】compile: 对主程序、测试程序可见,主程序参与打包、测试程序不参与打包
【2】test: 对主程序无效,对测试程序有效,不参与打包

【3】provided: 主要用于开发,测试有效。不参与打包(不部署),防止冲突(特别是一些服务器的jar包)。 点击并拖拽以移动点击并拖拽以移动

八、生命周期
✔ 清理、编译、测试、报告、打包、安装、部署、运行。
✔ 特性: 当执行某一阶段时,都是从第一阶段开始执行。
九、利用 MyEclipse 中使用 Maven
【1】使用内置 Maven 但是需要设置如下(不建议使用自带的 Maven 程序,不稳定。使用我们自己解压的文件)Window—>Preferences—>Maven4MyEclise—>Installations—>Add

【2】设置 User Settings: 指定 conf/settings.xml 的位置,进而获取本地仓库的位置,如下:

【3】修改每次创建 Maven 项目后,JDK的版本,需要在 settings.xml 文件中 标签内添加如下:
<profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties>
</profile>
【4】Maven 中执行命令的方式:pom.xml—>右键—>Maven build…—>Golas(compile)等。
【5】Maven 创建一个 Web 工程: 创建的时候 packing:war 包,创建完后,会发现与我们平常的 web 工程不太一样,缺少web.xml等文件。添加方式如下:选中工程右键进入 properties 属性—> Project Facets 去掉 Dynamic Web Model再勾上Dynamic Web Model,会出现超链接如下:

【6】在 Content directory 中输入要存放标准Web工程生成的文件的目录

【7】最终目录如下:

【8】Maven工程导入Existing Maven Project 没有 cope 功能,因此要将Maven工程放入 workspace 目录中,进行导入。在Maven工程中主要通过 pom.xml 文件进行识别。普通Java文件导入时,有 cope 功能,也能够导入 Maven 工程,但必须是Eclipse 工程,工程中含有 .clsspath/.project 文件为Eclipse工程。
【9】自定义版本标签: 方便版本升级等问题的解决,凡是需要声明后统一使用的场合都可以使用, 使用的时候只需要在 中输入 ${atguigu.spring.version} 即可
<properties><atguigu.spring.verion>4.0.0.RELEASE</atguigu.spring.version>
</peoperties>
十、继承
对依赖范围: test、provide 的同一 jar 包的版本的管理。
解决思想: 将此 jar包统一提取到“父”工程中,在子工程中声明此 jar包依赖时不指定版本号,以父工程中统一设定的为准,同时也便于修改。
操作步骤:
【1】创建一个 Maven 工程作为父工程,打包方式为 pom
【2】在子工程中声明对父工程的引用
【3】将子工程中坐标与父工程坐标相同的内容删掉
【4】在父工程中统一 jar包依赖
【5】在自工程中删除jar包依赖的版本号
子类找干爹配置:
<parent><!--父元素的pom地址--><relativePath>../Parent/pom.xml</relativePath><!--相对地址-->
</parent>
父类统一管理配置: 配置集成后,执行安装命令 install 时,要先安装 parent,按顺序 install,解决办法,聚合即可。
<dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit<artifactId><version>4.0</version><scope>test</scope></dependency><dependencies></dependencyManagement>
十一、聚合:一键安装各个模块工程
【1】配置方式: 在一个工程中配置,例如 parent 工程中:直接install parent项目就安装了全部工程,会自动检测顺序。
【2】查找 jar包的 pom文件: http://mvnrepository.com
<modules><module>../Hello</module><module>../HelloFriend</module>
</modules>
相关文章:
Maven 自动化构建
优质博文:IT-BLOG-CN 一、Maven:是一款服务于 Java平台的自动化构建工具 【1】Maven可以将一个项目按模块划分成不同的工程,利于分工协作; 【2】Maven可以将 jar包保存在自己的中央“仓库”中进行统一管理,有需要使用的工程引用这…...
Unicode字符集和UTF编码
文章目录 前言一、字符集和编码方式二、unicode字符集utf32编码utf8编码utf8编码函数示例utf8解码函数示例 utf16编码utf16编码解码函数示例 总结 前言 本文详细介绍 u n i c o d e unicode unicode 字符集和其相关的三种编码方式: u t f 8 utf8 utf8,…...
echarts默认图例(横线+圈圈)
修改echarts 图例样式 项目里折线图需要去掉圆点, 但是图例样式需要是默认样式(横线和圈圈) 原始代码:(只展示series 和legend配置 ) series: [{name: chartObj.names[ind_one],yAxisIndex: yIndex,type: ele_one,barMaxWidth: 15,tooltip: {show: true},data: chartObj.yAx…...
Shell脚本的基础和变量
1.shell脚本基础 1.1 shell的作用 Linux 系统中的 Shell 是一个特殊的应用程序,它介于操作系统内核与用户之间,充当 了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执 行的…...
VRRP协议-负载分担配置【分别在路由器与交换机上配置】
VRRP在路由器与交换机上的不同配置 一、使用路由器实现负载分担二、使用交换机实现负载分担一、使用路由器实现负载分担 使用R1与R2两台设备分别进行VRRP备份组 VRRP备份组1,虚拟pc1的网关地址10.1.1.254 VRRP备份组2,虚拟pc2的网关地址10.1.1.253 ①备份组1的vrid=1,vrip=…...
商务分析方法与工具(十):Python的趣味快捷-公司财务数据最炫酷可视化
Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊! 喜欢我的博客的话,记得…...
思源笔记如何结合群晖WebDav实现云同步数据
文章目录 1. 开启群晖WebDav 服务2. 本地局域网IP同步测试3. 群晖安装Cpolar4. 配置远程同步地址5. 笔记远程同步测试6. 固定公网地址7. 配置固定远程同步地址 在数字化时代,信息的同步与共享变得尤为重要。无论是个人用户还是企业团队,都渴望能够实现跨…...
Electron Forge | 跨平台实战详解(中)
简介 上篇 介绍了 Electron 和 Electron Builder 的基本用法,本篇将介绍更常用也更方便的打包工具,Electron Forge 。 Electron Forge 是一个为 Electron 应用的开发、打包和分发而设计的全功能工具集。它整合了多个底层 Electron 工具到一个统一的命令…...
stable diffusion教程
Stable Diffusion 是一种流行的图像生成模型,它可以根据文本提示生成高质量的图片。如果你想了解如何使用 Stable Diffusion,这里有一些基本的步骤和资源,可以帮助你开始使用: ### 1. 安装 Stable Diffusion 首先,你需…...
音频文件分析-- whisper(python 文档解析提取)
使用whisper转文本,这里使用的是large-v3版本 pip install githttps://github.com/openai/whisper.git import whisper import os from tqdm import tqdmmodel whisper.load_model("large-v3")path "rag_data" for fi in tqdm(os.listdir(pa…...
Python深度学习基于Tensorflow(3)Tensorflow 构建模型
文章目录 数据导入和数据可视化数据集制作以及预处理模型结构低阶 API 构建模型中阶 API 构建模型高阶 API 构建模型保存和导入模型 这里以实际项目CIFAR-10为例,分别使用低阶,中阶,高阶 API 搭建模型。 这里以CIFAR-10为数据集,C…...
火爆多年的抖音小店,2024年想要入驻需要什么条件呢?
大家好,我是电商糖果 我相信现在只要会上网的年轻人,对抖音小店一定不会感觉陌生。 它最近几年的风头,可是远远超过某宝,某多多了。 不少抖音用户也有了在抖音购物的习惯,现在的抖音上入驻了上百万家电商商家。 这…...
STM32G030C8T6:EEPROM读写实验(I2C通信)
本专栏记录STM32开发各个功能的详细过程,方便自己后续查看,当然也供正在入门STM32单片机的兄弟们参考; 本小节的目标是,系统主频64 MHZ,采用高速外部晶振,实现PB11,PB10 引脚模拟I2C 时序,对M24C08 的EEPRO…...
使用Git管理github的代码库-上
1、下载安装Git https://download.csdn.net/download/notfindjob/11451730?spm1001.2014.3001.5503 2、注册一个github的账号(已经注册的,可略过这一步) 3、打开git命令行,配置github账号 git config --global user.name &quo…...
经典文献阅读之--D-Map(无需射线投射的高分辨率激光雷达传感器的占据栅格地图)
0. 简介 占用地图是机器人系统中推理环境未知和已知区域的基本组成部分。《Occupancy Grid Mapping without Ray-Casting for High-resolution LiDAR Sensors》介绍了一种高分辨率LiDAR传感器的高效占用地图框架,称为D-Map。该框架引入了三个主要创新来解决占用地图…...
开源免费的定时任务管理系统:Gocron
Gocron:精准调度未来,你的全能定时任务管理工具!- 精选真开源,释放新价值。 概览 Gocron是github上一个开源免费的定时任务管理系统。它使用Go语言开发,是一个轻量级定时任务集中调度和管理系统,用于替代L…...
从零开始详解OpenCV车道线检测
前言 车道线检测是智能驾驶和智能交通系统中的重要组成部分,对于提高道路安全、交通效率和驾驶舒适性具有重要意义。在本篇文章中将介绍使用OpenCV进行车道线的检测 详解 导入包 import cv2 import matplotlib.pyplot as plt import numpy as np读入图像并灰度化…...
【Java代码审计】逻辑漏洞篇
【Java代码审计】逻辑漏洞篇 逻辑漏洞概述常见逻辑漏洞点 逻辑漏洞概述 逻辑漏洞一般是由于源程序自身逻辑存在缺陷,导致攻击者可以对逻辑缺陷进行深层次的利用。逻辑漏洞出现较为频繁的地方一般是登录验证逻辑、验证码校验逻辑、密码找回逻辑、权限校验逻辑以及支…...
SSH简介
SSH,全名叫Secure Shell,你可以想象它是一个超级安全的管道,专门用来远程操控电脑的。就好比你在家用遥控器指挥远处的电视换台,但比这高级多了,因为它是专门为电脑设计的。 为什么需要SSH? 在互联网的早期…...
Oracle的高级分组函数grouping和grouping_id
在网上对Oracle的高级分组函数grouping和grouping_id的讲解并不多,特别是grouping_id,还有解说有误的。经过1天研究,已经完全掌握了两个函数的作用和用法,下面简单的讲述即可明白。下面给大家分享。 GROUPING 函数 语法:grouping(表达式) 作用: GROUPING将超聚…...
ESXi 8.0U3i 新版本深度解析|官方原版核心优势 + 部署指南,稳定运维首选
随着企业虚拟化、私有云部署需求的不断升级,一款稳定、安全、可追溯的底层虚拟化系统,成为数据中心、机房运维与合规生产的核心诉求。VMware ESXi 8.0U3i(版本 8.0U3i-25205845)作为 8.0 系列 2026 年最新推出的稳定版本ÿ…...
百考通AI实践报告:让实习沉淀有迹可循,成长答卷专业呈现
实习实践是连接理论学习与职场实战的桥梁,而一份逻辑清晰、内容详实的实践报告,既是对实习经历的系统复盘,也是个人成长与能力认证的重要载体。然而,许多学生在撰写报告时,常陷入思路混乱、结构松散、重点模糊的困境&a…...
AI行业的“新风口”:大模型时代下AI从业者的职业新机遇
在AI大模型技术飞速发展的当下,全球AI市场规模正以惊人速度扩张。据IDC预测,2025年全球AI大模型市场规模突破1200亿美元,中国占比超35%。这股浪潮不仅重塑了软件开发行业格局,也为软件测试从业者带来了前所未有的职业新机遇。对于…...
DIY改造:为Hakko FX-901烙铁打造USB-C充电电池包
1. 项目概述:打造你的专属USB充电无线烙铁 如果你和我一样,经常需要带着烙铁跑现场——无论是调试RC模型、在Maker Faire上修复作品,还是在户外临时搭建一个电子装置——那你一定对传统无线烙铁的痛点深有体会。四节AA电池,用不了…...
别再只用脚本了!用MATLAB面向对象编程重构你的科研数据处理流程(附完整Point类示例)
别再只用脚本了!用MATLAB面向对象编程重构你的科研数据处理流程(附完整Point类示例) 科研数据处理中,你是否经常遇到这样的场景:同一个实验数据需要反复处理,每次都要复制粘贴大段脚本;变量命名…...
iOS设备激活锁绕过全指南:AppleRa1n离线解锁解决方案
iOS设备激活锁绕过全指南:AppleRa1n离线解锁解决方案 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 你是否曾遇到过这样的情况:购买了一台二手iPhone,却发现设备被…...
aivectormemory:轻量级向量记忆库,为AI应用开发提供灵活存储方案
1. 项目概述:向量记忆库的“新玩家”最近在折腾AI应用开发,特别是涉及到需要让模型“记住”大量私有知识或者进行复杂对话的场景时,一个绕不开的核心组件就是向量数据库。大家熟知的Pinecone、Weaviate、Milvus这些方案固然强大,但…...
K210数字识别数据集采集的两种实用方法:串口定时与按键触发,哪种更适合你的电赛项目?
K210数字识别数据集采集实战:串口定时与按键触发的深度对比与优化方案 在嵌入式AI与电赛项目中,数据采集的质量往往决定了模型识别的上限。K210作为边缘计算设备的性价比之选,其数据采集方案的合理性直接影响后续模型训练效果。本文将深入剖…...
英特尔马来西亚六厂布局:先进封装如何重塑半导体制造与供应链
1. 项目概述:从一则新闻到半导体制造的全球拼图前几天,行业里不少朋友都在转一条消息,说英特尔在马来西亚的封装产能布局又有新动作,计划要搞到六座工厂的规模。乍一看,这好像就是个普通的海外建厂新闻,但如…...
尝试Taotoken不同模型节点对生成速度的细微影响感受
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 尝试Taotoken不同模型节点对生成速度的细微影响感受 1. 测试背景与动机 在日常使用大模型进行开发或内容创作时,除了模…...
