Maven日常 —— 你应该知道的一二三

FPGA当交换机?基于10G Ethernet Subsystem主从模式实现多光口UDP转发实战 本文详细解析了如何利用Xilinx 7系列FPGA的10G Ethernet Subsystem IP核构建多端口以太网交换系统。通过主从模式实现时钟共享,设计独立协议栈和高效数据转发架构,提供完整的10G以太网交换解决方案,支持UDP转发和巨型帧处理,适用于高速网络设备开发。 阅读详情

以前在日常工作中,使用Maven只是机械的执行Maven clean、Maven install,对其中的原理与过程并无了解,近期阅读了《Maven实战》,对Maven有了更深入的理解。

本篇就针对读书后的理解,对Maven的日常使用相关的知识进行总结与归纳。

如果想要了解更多内容参考:《Maven实战》

1 什么是Maven?

如果没有Maven,你可能不得不经历下面的过程:

1 如果使用了spring,去spring的官网下载jar包;如果使用hibernate,去hibernate的官网下载Jar包;如果使用Log4j,去log4j的官网下载jar包.....

2 当某些jar包有依赖的时候,还要去下载对应的依赖jar包

3 当jar包依赖有冲突时,不得不一个一个的排查

4 执行构建时,需要使用ant写出很多重复的任务代码

5 当新人加入开发时,需要拷贝大量的jar包,然后重复进行构建

6 当进行测试时,需要一个一个的运行....检查

有了Maven,它提供了三种功能:

1 依赖的管理:仅仅通过jar包的几个属性,就能确定唯一的jar包,在指定的文件pom.xml中,只要写入这些依赖属性,就会自动下载并管理jar包。

2 项目的构建:内置很多的插件与生命周期,支持多种任务,比如校验、编译、测试、打包、部署、发布...

3 项目的知识管理:管理项目相关的其他内容,比如开发者信息,版本等等

2 Maven如何管理jar包

关于jar包的坐标,有过使用经验的都应该有所了解,maven是通过groupId,artifactId,以及version确定一个唯一的jar包。

这部分的内容可以参考前一篇:构建过程

例如,最常使用的Junit的声明就是如下:

复制代码
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <scope>test</scope> 这是声明的范围,不同的生命周期所要求的范围是不一样的,详情参考《Maven实战》
</dependency>
复制代码

首先先来说说Maven下载jar包的过程:

在Maven中会涉及到几种仓库:

1 工作空间,即我们的项目工程,这里面可能会放着pom.xml文件,这个pom.xml就是maven的配置文件

2 本地仓库,本地仓库用于存放jar包,其实Jar包并不是直接放入工作空间的,它是存放在本地仓库,然后在执行发布打包的时候,添加依赖路径

3 私库:私库是使用者自己搭建的maven仓库,用于缓解频繁从外网下载jar包资源的压力。而且使用私库作为缓存层,也相对安全一些。

4 共享仓库:书中所说的中央仓库或者一些常用的镜像网站都属于这种,国内比较著名的oschina以及163都是不错的maven仓库。

 

当我们在pom中声明了依赖关系后,参考上面的图:

1 Maven在执行相关的任务时,会先去本地仓库查看是否有该资源,如果有的话,判断版本是否正确,如果一切都没问题则直接使用;否则,执行下一步

2 Maven会去配置的共享仓库中查找,如果找到就拷贝到本地仓库中;找不到则会给出相关的提示

3 Maven在本地如果搭建了私库,则会去私库中查找,找到就拷贝到本地仓库;找不到就会去共享仓库中查找,然后放入私库和本地库。有了私库,局域网内的开发者可以共享依赖,就不用每个人都去外网下载jar包,浪费带宽了。

 

关于本地仓库和共享仓库的配置都在settings.xml中,这个文件位于conf中,如果没有则拷贝一份即可。

View Code

其中本地仓库的配置为:

<localRepository>F:\apache-maven-3.3.9\repo</localRepository>

默认是在 用户的本地目录/.m2/repository中。

共享仓库的地址配置为:

复制代码
  <mirrors>
    <mirror>
      <id>CN</id>
      <name>OSChina Central</name>                           
      <url>http://maven.oschina.net/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
复制代码

3 Maven的生命周期与阶段

Maven中有三大生命周期,他们相互独立,分别是:

1 clean 清理

2 default 构建

3 site 建站

一般来说,clean和default比较常用。

每个生命周期又有不同的阶段,阶段按顺序执行,并且可以指定执行结束的阶段。构建的时候,会依次从最上面的阶段执行到指定的那个阶段。

比如,clean有3个阶段:

1 pre-clean 执行清理前要完成的工作
2 clean 清理上一次构建生成的文件
3 post-clean 执行清理后需要完成的工作

当我们输入mvn clean的时候,执行的是pre-clean和clean两个阶段。

default的阶段比较多:

复制代码
1 validate
2 initialize
3 generate-sources
4 process-sources
5 generate-resources
6 process-resources
7 compile
8 process-classes
9 generate-test-sources
10 process-test-sources
11 generate-test-resources
12 process-test-resources
13 test-compile
14 process-test-classes
15 tet
16 prepare-package
17 package
18 pre-integration-test
19 integration-test
20 post-integration-test
21 verify
22 install
23 deploy
复制代码

看名字大概就能理解,当执行mvn install的时候,实际会执行validate-->initialize-->...-->verify-->install等二十几个阶段。

为了操作方便,不同的声明周期可以在一起执行,比如mvn clean install,会先执行clean的阶段,在执行install的阶段。

 

在IDE开发环境中,当我们Run as的时候,就可以执行maven clean进行清理,或者执行maven install进行构建,也可以执行maven build同时执行clean和install两个任务。

基本上了解上面两个知识点,就足够日常工作使用了。当然Maven可不止这么一点点的东西,比如它还涉及到自定义构建任务、间接依赖的管理、插件的使用、私库的搭建等等,如果需要的话,读者可以参考《Maven实战》,这本书讲述的很全面了。

4×100G采集卡设计实战:FPGA选型、PCIe与信号完整性全解析 在高速网络流量监控、安全审计与信令抓包等场景中,高带宽数据采集卡是连接物理网络与计算分析平台的关键硬件。当链路速率提升至100G甚至400G时,设计难点不再局限于光接口本身,而是如何将多端口线速数据高效送入主机内存。这一过程涉及可编程逻辑器件的高速收发器架构、PCIe总线带宽瓶颈、板级信号完整性以及时钟与电源管理等核心技术原理。在实际工程中,工程师需要结合FPGA资源评估、DMA数据通路优化和过滤截断策略,才能实现可控的丢包与稳定的吞吐。同时,面向国产化替代需求,还需兼顾器件兼容性验证与PCB余量设计。本文 阅读详情

相关推荐

OpenCV函数用法之calibrateCamera

参考链接:opencv中标定函数calibrateCamera_ychl87的专栏-优快云博客 世界坐标系的三维点投影到成像坐标系中的二维点的投影公式如下: 其中(X,Y,Z)为世界坐标系中的三维点; (u,v)为成像面坐标系中的二维点; A为相机的内参数矩阵:(cx,cy)为主光轴点,一般为图像的中心;fx和fy为焦距; [R|t]为相机的外参数矩阵:R为旋转矩阵,t为位移矩阵; 上述公式的简单推理过程如下 考虑到镜头畸变 其中,k1,k2,k3,k4,k5和k6为径向畸变,p1和.

tiger&sheep的博客 3万+

项目一众筹00_04Maven配置工作空间环境、STS创建第二个Maven项目,演示依赖、一个新的工作空间环境标准设置

Maven配置工作空间环境、STS创建第二个Maven项目,演示依赖目录 文章目录Maven配置工作空间环境、STS创建第二个Maven项目,演示依赖目录Maven配置工作空间环境sts(eclipse)里面配置mavenSTS创建第二个Maven项目,演示依赖创建Maven项目写一个主程序Maven的运行方式 Maven配置工作空间环境 第一个maven练习我们是手动创建的,这里我们就不手动了,毕竟在工作中也是必须要会用工具创建的 环境配置好之后,还有一个最重要的,那就是我们此次文的主

小良的博客 463

原生H5如何优雅拦截浏览器返回事件:全面屏侧滑退出的解决方案

本文深入探讨了在原生H5中如何优雅地处理浏览器返回事件,特别是针对全面屏手机侧滑返回手势的解决方案。核心是利用HTML5 History API,通过`history.pushState`方法在历史栈中插入记录,并监听`popstate`事件,从而实现在用户侧滑时平滑关闭全屏预览层而非直接退出页面,有效提升了移动端H5应用的原生交互体验。

i0j1k2l3m的博客 268

Soc-e在FPGA上为任务关键型应用量身定制的IEEE 1588感知以太网交换机

摘要: 现代F​​PGA和可重配置平台的长期供应,灵活性和集成能力已使这些器件成为航空航天和国防市场上新型嵌入式设备的首选技术。同样,以太网技术与用于亚微秒定时同步的IEEE 1588标准的使用相结合,简化了这些系统之间的集成和互操作性。 此外,该领域的最新创新,例如标准确定性以太网(TSN)或高可用性标准化协议(HSR / PRP),正在促进整个数据流的工程设计:精确的时间戳数据采集,实时流量通信和无缝与Edge计算和IT基础架构集成。 此外,FPGA供应商提供的图形设计工具套件也促进了这些完整系统

工业通讯__HongKe的博客 2660

光谱数据计算CIE值(三刺激值、CIE1931、CIE1976、CCT)软件

软件界面如下,免安装,拷贝即可使用 导入光谱数据即可计算三刺激值、CIE1931、CIE1976、CCT CIE1931、CIE1976色坐标图形只管显示 导入的光谱数据格式如下,txt文本 波长380到780,间隔1nm 注意:缺省的数据默认写0即可 下面为一些CIE相关介绍: CIE(国际发光照明委员会):原文为Commission Internationale de L’Eclairage(法)或International Commission on Illumination(英)。这个委员会创

业余程序员小徐的博客 2万+

UFS Link Startup全流程解析:从硬件初始化到链路稳定的5个关键阶段

本文详细解析了UFS Link Startup的全流程,从硬件初始化到链路稳定的5个关键阶段,包括初始化阶段、数据通道发现、数据通道重新对齐、链路启动收尾和能力交换阶段。通过时序分析、代码实现和实际案例,帮助开发者掌握UFS协议链路启动的技术细节,确保设备与主机之间的可靠通信。

weixin_30687051的博客 429

Maven常用的一些日常笔记

Maven是什么?Maven译为"专家"、"内行",是 Apache 下的一个纯 Java 开发的开源项目管理工具,可以对 Java 项目进行构建、依赖管理。简而言之,我们使用了Maven,不仅仅可以对工程项目进行管理,打包等,还可以免下载安装类,举个例子,你需要import kafka,只需要在pom.xml配置即可,他会自动为你下载,无需你再离线安装配置 Maven下载安装配置 见我之前写的...

神芷迦蓝寺 489

Ubuntu环境下读取罗技G29方向盘信息

Ubuntu环境下读取罗技G29方向盘信息

工大机器人工作室 3456

日常开发需要掌握的Maven知识

日常开发需要掌握的Maven知识

Hanyinh的博客 377

AUTOSAR RTE配置实战:从ECU分区到Task映射的完整指南

本文提供了一份AUTOSAR RTE配置的完整实战指南。从创建ECU分区、定义OS任务,到实现Runnable Entity与Task的精确映射,详细解析了每一步的操作要点与常见陷阱。文章结合配置工具界面,旨在帮助开发者高效完成RTE配置,确保系统实时性与数据一致性,是掌握AUTOSAR核心开发流程的实用参考。

weixin_29228203的博客 483

YOLO26原创优化:SPPF优化 | 新一代高效可形变卷积DCNv4如何做二次创新?高效结合SPPF

如何跟YOLO26结合:1) SPPF高效结合

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 356

Maven - 【日常问题】

1. Eclipse中新建MAVEN webapp项目后只有src/main/resources一个目录描述:解决方案:配置下项目的Java Build Path中的JRE/JDK就可以解决了。 Tips:使用Eclipse时注意看Problems view,可以清楚的找到问题描述与解决方案。 2. Cannot change version of project facet Dynamic Web

「有且仅有」 666

基于STM32的太阳能充电宝设计_资料编号31

系统硬件包括主控 STM32F103C8T6、0.96 OLED 显示屏、蜂鸣器、电源自锁开关、温度传感器 DS18B20、继电器、5 V DC 升压模块 、TB4056、18650锂电池、9 V太阳能板、稳压降压 5 V三极管。电源供应:锂电池为系统供电,9 伏太阳能板经 5 伏降压稳压三极管降压为 5 伏后传送到 TP4056,TP4056 为锂电池供电,因锂电池电压 3.7 伏,通过 5 伏 DC 升压模块升压到 5 伏为整个系统提供 5 伏电压。

嵌入式阿齐Archie 1万+

Maven知识汇总:从 听说过 到 满足日常开发

Maven知识汇总:从 听说过 到 满足日常开发 最开始使用maven仅仅只是用来导包。然后其他的就不清楚了。 最近两周的实际开发踩了一些坑,再去了解。现在对maven的使用能够满足日常开发要求。 1. Maven是什么,基础用法 maven是一个管理依赖和构建项目的工具。 给我们带来的好处: 之前我们写代码的时候。很多时候需要手动导包:先去网上下载需要的jar包,下载到本地(一般放到lib文件夹下),然后在build path。现在的我们只需要知道我们需要的名字。例如mysql的jdbc,然后去ma

五更依旧朝花落的博客 235

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 50种方法优化SQL Server
下一篇: 《Spark大数据处理》—— 读后总结
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值