maven—初级篇

maven—初级篇

 

一些零散的笔记:

雨伞 mvn命令若干:

mvn -h,不会用时,可寻求帮助。

mvn clean compile,将.java类编译为.class文件;

mvn clean test, 执行单元测试。本质上,还是执行了一个完整的生命周期,clean:clean, resources:resources, compiler:compile, resources:testResources, compiler:testCompile

mvn clean package,进行打包。

mvn clean install –Dmaven.test.skip

mvn clean install,将某jar包安装到maven本地仓库中。

mvn archetype:generate,快速的搭建项目骨架,输入一些groupId/artifactId/version等信息,由mvn插件自动生成一些必要的依赖和项目骨架。

 

 

 

 

雨伞 这三个标签,形成一个小单元(所谓的依赖的“基本坐标”)

<groupId>, 定义组,如com.googlecode.myapp

<artifactId>, 定义组内一个具体的条目,如helloworld。(com.googlecode.myapp.helloworld)

<version>,定义个版本号。一般开发中的包,1.0-SNAPSHOT即用snapshot作为后缀。

雨伞 以下为非必须(但要了解):

<type> ,package类型,一般不用写,默认是jar。还有,jar/war/pom/maven-plugin/ear等。

<scope>,依赖范围,我简记为“能见度”。例如,

test=测试。仅对测试类有效,在java类中引入会报错的。例如,JUnit

compile=编译+测试+运行,默认不写则是这种编译方式,对于编译、测试、运行都有效。例如,spring-core

provided=编译+测试。对于编译和测试有效,运行时无效。例如,servlet-api,其在编译和测试时需要使用,但在运行时由于容器已经提供,所以不需要mvn重新的引入一遍。

runtime=运行时。例如,JDBC驱动实现,类的编译只需JDK提供的JDBC接口即可,在真正执行测试或运行时才需实现上述接口的具体JDBC驱动。

system=// 这个可以不用理解。

import=导入。

<optional>,可选依赖。例如,A->B,B->C(optional=true),那么A将对C不形成传递依赖。

<exclusions>,排除依赖。例如,A->B, B->C(1.0-SNAPSHOT),而我实际想用C2.0,那么就需要在B中将C给排除出去。

 

雨伞 对于同一模块的jar包,可以在pom中通过统一变量进行定义

声明<properties><springframework.version>2.5.6</…>

引用<version>${springframework.version}</…>

 

雨伞 传递依赖(->表示依赖):

A->B,而实际上,B->C,那么A对B是直接依赖,对C是传递依赖。其“能见度”如下表所示。第一列为A->B,对一行为B->C,表格中内容为,A->C。

  compile test provided runtime
compile compile no no runtime
test test no no test
provided provided no provided provided
runtime runtime no no runtime

 

雨伞  依赖调解:

A->B->C->X(1.0)

A->D->X(2.0)

那么,按路径最短者生效(即X2.0).

A->B->Y(1.0)

A->C->Y(2.0)

那么,mvn2.0.8及之前版本,顺序不确定。mvn2.0.9以后,第一声明者优先。

 

雨伞  如何查看依赖

一个事实:mvn会自动解析所有项目的直接依赖和传递性依赖,并且根据一定规则正确判断每个依赖的范围,对于一些依赖冲突,也能进行调节,以确保任何一个构件只有唯一的版本在依赖中存在。在这些工作之后,最后得到的那些依赖被称为已解析依赖(Resolved Dependency)。

一个命令:mvn dependency:list

一个命令:mvn dependency:tree

一个命令:mvn dependency:analyze

 

==================以下为进阶===================

 

雨伞  生命周期:

public abstract class AbstractBuild(){

    public void build(){

          initialize(); // 初始化工作

          compile(); // 编译

          test();        // 测试

          package(); // 打包

          integrationTest(); // 集成测试

          deploy();  // 部署

    }

}

这里只是个示意,以说明maven存在的价值、意义和定位。其中的每个步骤,都可以用插件来做。mvn也为我们设置了默认的插件,不过如果想进行个性化的定制,可以自己选择plugin,或者自己写plugin。

1)以下三个生命周期,相互独立,且每个生命周期的每个步骤,均可单独调用(但假如调步骤3的时候,其前的步骤1、2也是会执行的)。

2)注意,在命令行执行mvn命令,本身就是在调用mvn的生命周期哦,可爱吧,呵呵。

clean生命周期

pre-clean

clean

post-clean

default生命周期(从上到下,从左至右的看哦)

validate

generate-sources

generate-test-sources

prepare-package

pre-interation-test

initialize

process-sources(注1)

process-test-sources

package(注4)

integration-test

 

generate-resources

generate-test-resources

 

verify

 

process-resources

process-test-resources

 

install(注5)

 

compile(注2)

test-compile

 

deploy(注6)

 

process-classes

process-test-classes

   
   

test(注3)

   

注1:一般来说,对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录当中去。

注2:一般来说,是编译src/main/java目录下的java文件至项目输出的主classpath目录当中去。

注3:使用单元测试框架运行测试,测试代码不会被打包或部署。

注4:将编译好的代码,打包成可发布的格式,如jar。

注5:将包安装到mvn本地仓库,供本地其他mvn项目使用。

注6:将包复制到远程仓库。

 

site生命周期

暂略去不谈。

 

 

雨伞  认识插件:

 

1)在pom中,可自定义插件,并将其绑进生命周期中去。有些插件自己也会有默认的生命周期的,取决于插件自身实现。根据功能,也可以一个插件绑到N个阶段中去。

2)在pom中,可对插件进行全局配置,例如maven-compiler-plugin默认都用JDK 1.5进行。

3)。。。差不多了,先写到这里。

 

 

 

 

 

分类:  Utils
标签:  Mvnmavenpom

内容概要:本文介绍了一个基于多传感器融合的定位系统设计方案,采用GPS、里程计和电子罗盘作为定位传感器,利用扩展卡尔曼滤波(EKF)算法对多源传感器数据进行融合处理,最终输出目标的滤波后位置信息,并提供了完整的Matlab代码实现。该方法有效提升了定位精度与稳定性,尤其适用于存在单一传感器误差或信号丢失的复杂环境,如自动驾驶、移动采用GPS、里程计和电子罗盘作为定位传感器,EKF作为多传感器的融合算法,最终输出目标的滤波位置(Matlab代码实现)机器人导航等领域。文中详细阐述了各传感器的数据建模方式、状态转移与观测方程构建,以及EKF算法的具体实现步骤,具有较强的工程实践价值。; 适合人群:具备一定Matlab编程基础,熟悉传感器原理和滤波算法的高校研究生、科研人员及从事自动驾驶、机器人导航等相关领域的工程技术人员。; 使用场景及目标:①学习和掌握多传感器融合的基本理论与实现方法;②应用于移动机器人、无人车、无人机等系统的高精度定位与导航开发;③作为EKF算法在实际工程中应用的教学案例或项目参考; 阅读建议:建议读者结合Matlab代码逐行理解算法实现过程,重点关注状态预测与观测更新模块的设计逻辑,可尝试引入真实传感器数据或仿真噪声环境以验证算法鲁棒性,并进一步拓展至UKF、PF等更高级滤波算法的研究与对比。
内容概要:文章围绕智能汽车新一代传感器的发展趋势,重点阐述了BEV(鸟瞰图视角)端到端感知融合架构如何成为智能驾驶感知系统的新范式。传统后融合与前融合方案因信息丢失或算力需求过高难以满足高阶智驾需求,而基于Transformer的BEV融合方案通过统一坐标系下的多源传感器特征融合,在保证感知精度的同时兼顾算力可行性,显著提升复杂场景下的鲁棒性与系统可靠性。此外,文章指出BEV模型落地面临大算力依赖与高数据成本的挑战,提出“数据采集-模型训练-算法迭代-数据反哺”的高效数据闭环体系,通过自动化标注与长尾数据反馈实现算法持续进化,降低对人工标注的依赖,提升数据利用效率。典型企业案例进一步验证了该路径的技术可行性与经济价值。; 适合人群:从事汽车电子、智能驾驶感知算法研发的工程师,以及关注自动驾驶技术趋势的产品经理和技术管理者;具备一定自动驾驶基础知识,希望深入了解BEV架构与数据闭环机制的专业人士。; 使用场景及目标:①理解BEV+Transformer为何成为当前感知融合的主流技术路线;②掌握数据闭环在BEV模型迭代中的关键作用及其工程实现逻辑;③为智能驾驶系统架构设计、传感器选型与算法优化提供决策参考; 阅读建议:本文侧重技术趋势分析与系统级思考,建议结合实际项目背景阅读,重点关注BEV融合逻辑与数据闭环构建方法,并可延伸研究相关企业在舱泊一体等场景的应用实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值