Maven总结

Maven(四)常用命令大全 阅读详情


一,Maven基本命令

  1. -v:查询Maven版本 
    本命令用于检查maven是否安装成功。 
    Maven安装完成之后,在命令行输入mvn -v,若出现maven信息,则说明安装成功。

  2. compile:编译 
    将Java源文件编译成class文件

  3. test:测试项目 
    执行test目录下的测试用例

  4. package:打包 
    将项目打成jar包

  5. clean:删除target文件夹

  6. install:安装 
    将当前项目放到Maven的本地仓库中。供其他项目使用

二,Maven的目录结构



三,什么是Maven仓库?

Maven仓库用来存放Maven管理的所有Jar包。分为:本地仓库 和 中央仓库。

  • 本地仓库 
    Maven本地的Jar包仓库。
  • 中央仓库 
    Maven官方提供的远程仓库。

当项目编译时,Maven首先从本地仓库中寻找项目所需的Jar包,若本地仓库没有,再到Maven的中央仓库下载所需Jar包。



四,传递依赖 与 排除依赖

  • 传递依赖:如果我们的项目引用了一个Jar包,而该Jar包又引用了其他Jar包,那么在默认情况下项目编译时,Maven会把直接引用和简洁引用的Jar包都下载到本地。
  • 排除依赖:如果我们只想下载直接引用的Jar包,那么需要在pom.xml中做如下配置:(将需要排除的Jar包的坐标写在中)
<exclusions>
    <exclusion>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
    </exclusion>
</exclusions>
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

五,依赖冲突

若项目中多个Jar同时引用了相同的Jar时,会产生依赖冲突,但Maven采用了两种避免冲突的策略,因此在Maven中是不存在依赖冲突的。

  • 短路优先
本项目——>A.jar——>B.jar——>X.jar
本项目——>C.jar——>X.jar
 
  • 1
  • 2
  • 1
  • 2

若本项目引用了A.jar,A.jar又引用了B.jar,B.jar又引用了X.jar,并且C.jar也引用了X.jar。 
在此时,Maven只会引用引用路径最短的Jar。

  • 声明优先 
    若引用路径长度相同时,在pom.xml中谁先被声明,就使用谁。
  • 六,什么是“坐标”?

    在Maven中,坐标是Jar包的唯一标识,Maven通过坐标在仓库中找到项目所需的Jar包。 
    如下代码中,groupId和artifactId构成了一个Jar包的坐标。

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.1.1</version>
    </dependency>
    groupId :com.公司名 artifactId:项目名-模块名 version:版本信息

七,聚合

  1. 什么是聚合? 
    将多个项目同时运行就称为聚合。

  2. 如何实现聚合? 
    只需在pom中作如下配置即可实现聚合:

    <modules>
        <module>../模块1</module>
        <module>../模块2</module>
        <module>../模块3</module>
    </modules>
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

模块名称:artifactId

八,继承

  1. 什么是继承? 
    在聚合多个项目时,如果这些被聚合的项目中需要引入相同的Jar,那么可以将这些Jar写入父pom中,各个子项目继承该pom即可。

  2. 如何实现继承?

    • 父pom配置:将需要继承的Jar包的坐标放入标签即可。
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-spring</artifactId>
                <version>1.2.2</version>
            </dependency> 
        </dependencies>
    </dependencyManagement>
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 子pom配置:
<parent>
    <groupId>父pom所在项目的groupId</groupId>
    <artifactId>父pom所在项目的artifactId</artifactId>
    <version>父pom所在项目的版本号</version>
</parent>

九,pom.xml,这是Maven的核心配置文件

打开pom.xml,最基础的是这样的:

1
2
3
4
5
6
7
8
9
10
<project xmlns= "http://maven.apache.org/POM/4.0.0"
     xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
     
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.xrq.withmaven</groupId>
   <artifactId>withmaven</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <build/>
</project>

因为这个配置文件是Maven的核心,因此有必要详细解读一下pom.xml,来先看一下上面的几个:

1、modelVersion

  指定了当前Maven模型的版本号,对于Maven2和Maven3来说,它只能是4.0.0

2、groupId

  顾名思义,这个应该是公司名或是组织名。一般来说groupId是由三个部分组成,每个部分之间以"."分隔,第一部分是项目用途,比如用于商业的就是"com",用于非营利性组织的就  是"org";第二部分是公司名,比如"tengxun"、"baidu"、"alibaba";第三部分是你的项目名

3、artifactId

  可以认为是Maven构建的项目名,比如你的项目中有子项目,就可以使用"项目名-子项目名"的命名方式

4、version

  版本号,SNAPSHOT意为快照,说明该项目还在开发中,是不稳定的版本。在Maven中很重要的一点是,groupId、artifactId、version三个元素生成了一个Maven项目的基本坐标,这非常重要,我在使用和研究Maven的时候多次感受到了这点。

在上面的这些元素之外,还有一些元素,同样罗列一下:

5、packing

  项目打包的类型,可以使jar、war、rar、ear、pom,默认是jar

6、dependencies和dependency

  前者包含后者。前面说了,Maven的一个重要作用就是统一管理jar包,为了一个项目可以build或运行,项目中不可避免的,会依赖很多其他的jar包,在Maven中,这些依赖就被称为dependency。

  说到这里,就有一个本地仓库和远程仓库的概念了。官方下载的本地仓库的配置在"%MAVEN_HOME%\conf\settings.xml"里面,找一下"localRepository"就可以了;MyEclipse默认的本地仓库的地址在"{user.home}/.m2/repository"路径下,同样找一下"localRepository"就可以找到MyEclipse默认的本地仓库了。

  本地仓库和远程仓库是这样的,Maven工程首先会从本地仓库中获取jar包,当无法获取指定jar包时,本地仓库会从远程仓库(中央仓库)中下载jar包,并放入本地仓库以备将来使用。

  举个例子,比方说我的项目中用到了MyBatis,那么可以这么配置:

1
2
3
4
5
6
7
<dependencies>
     <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis</artifactId>
         <version>3.2.5</version>
     </dependency>
</dependencies>

    之前有说过groupId、artifactId、version唯一标识一个Maven项目,有了这三个元素,我们就可以去远程仓库下载MyBatis3.2.5.jar到本地仓库了。回想我们之前的做法,如果要MyBatis的jar包,发现没有,然后去网上下载一个,需要另外的jar包,然后去网上下载一个,但是有了Maven,就方便多了,只需要配置jar包对应的dependency依赖,Maven会自动帮助我们去远程仓库中下载jar包到本地仓库中。

7、properties

  properties是用来定义一些配置属性的,例如project.build.sourceEncoding(项目构建源码编码方式),可以设置为UTF-8,防止中文乱码,也可定义相关构建版本号,便于日后统一升级。

8、build

  build表示与构建相关的配置,比如build下有finalName,表示的就是最终构建之后的名称。

接着解释一下Maven的目录结构:

  • main目录下是项目的主要代码,test目录下存放测试相关的代码
  • 编译输出后的代码会放在target目录下
  • src/main/java下存放Java代码,src/main/resources下存放配置文件
  • 这里没有webapp,Web项目会有webapp目录,webapp下存放Web应用相关代码
  • pom.xml是Maven项目的配置文件


 

Maven入门使用常见问题

1、我从SVN上下载了一个以Maven构建的工程,下载完毕没有jar包怎么办?

从资源库上下载下来的Maven工程,是没有jar包的,此时可以这么做:

(1)删除Maven工程,但是删除的时候不要删除本地工程里面的Maven工程,只删除MyEclipse中的Maven工程

(2)右键Import->Maven4MyEclipse->Existing Maven Projects,导入你的Maven工程,此时MyEclipse在构建工程的时候,假如你的本地仓库中没有dependcy中的jar包,便会去远程仓库下载jar包到本地仓库中。你的工程导入完毕之后,Library应该是这样的:

2、重新下载Maven工程所依赖的jar包、导入jar包都需要触发Maven工程的build workspace,那么如何才能触发Maven工程的build workspace?

找到一个pom.xml,随便修改一下,加一个空格、减一个空格什么的,ctrl+s保存一下,便会触发Maven工程的build workspace了

3、本地仓库的目录结构是什么样子的?

groupId、artifactId、version确定一个唯一的Maven,比方说我有一个mybatis的dependcy:

1
2
3
4
5
<dependency>
     <groupId>org.mybatis</groupId>
     <artifactId>mybatis</artifactId>
     <version>3.2.5</version>
</dependency>

那么mybatis的jar包应该在%Maven仓库地址%\org\mybatis\mybatis\3.2.5\这一路径下,看到了吧,先groupId,再mybatis,最后version,每个名字都是一个文件夹的名字

4、有些jar包在dependcy里面有配置,Import了Maven工程,下载完工程所依赖的jar包之后,发现本地仓库里面却没有,怎么办?

可能是原先下载jar包的时候出了什么问题,从artifactId目录开始删除以下的所有文件/文件夹,然后触发一次Maven工程的build workspace就可以了

5、本地仓库中确定已经有jar包了,工程里面却报错,说找不到jar包,该怎么办?

应该有很多解决办法,目前解决的一种办法是,MyEclipse->Window->Preferences->搜索Maven->User Settings,Update Settings和Reindex点一下就好了。另外,可以尝试一下把本地Maven仓库内的jar包删除一下,然后重新build workspace,可能也可以。


一文搞定学术英语写作 (斯坦福SCI论文写作课程笔记) 0.前言: 本文基于斯坦福Kristin Sainani 教授的学术论文写作公开课——SCI论文写作(Writing in the Sciences)。在此基础上进行章节顺序的重排及部分内容的删减,以方便第一次进行英语学术论文写作的同学快速上手。 时间充足和想要系统学习英文学术写作的同学,十分建议观看完整课程视频,一定会受益匪浅!课程地址如下: 课程B站地址:https://www.bilibili.com/video/BV1zv41177JQ 1.论... 阅读详情

相关推荐

RLC电阻电容电感基础知识——电感篇

电感 等效电路 电感线圈由铜导线绕制,等效电路如图所示。 寄生电阻RS,包括了绕线电阻、引脚串联电阻以及磁芯损耗电阻三部分组成,其中绕线电阻与线径、长度、铜线电阻率有关;引脚电阻与引线长短、粗细有关;磁芯损耗电阻与磁芯材料特性有关,显然磁芯损耗电阻还与工作频率有关.寄生电容C主要是绕线圈与圈之间的杂散电容(为PF级),与绕线工艺有关。 等效导纳 显然: (1)当角频率ω(频率f)较小时,呈电感性. (2)当角频率ω等于ω0时,导纳Y虚部为0,呈现电阻性,即发生共振。令导纳Y虚部为0,即可求出共振角频率ω

azj2019的博客 1万+

MAVEN:在cmd运行mvn -v时出现提示“mvn -v”不是内部或外部命令错误

分享该错误所有可能情况和解决方法,主要解决setting的默认jdk版本出错

Zhuoning Guo's Blog 9477

【AutoDL】使用云服务器跑深度学习代码

1.算力市场 租用服务器,选择自己心仪的服务器2.镜像可以选择一些基础的镜像,社区镜像里是git上有的环境。3.上传文件在文件存储中,选择上传的区,在右边点击上传,选择自己的文件上传到云服务器中。

weixin_45768644的博客 3703

Maven基础

基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。 1.环境搭建 1.1 下载 http://maven.apache.org/ 1.2 添加 M2_HOME 添加 M2_HOME 环境变量到 Windows 环境变量,并将其指向你的 Maven 文件夹。 1.3 添加到环境变量 - PATH 更新 PATH 变量,添加 Maven bin 文件夹到 PA...

weixin_34059951的博客 362

快速上手springboot+vue的前后端分离项目

使用webStorm新建项目后,把 .lock文件删除后项目运行才不报错,配置文件 vue.config.js 中加入 lintOnSave: false 关闭eslint语法检测。在多层嵌套的父子组件之间传递状态已经十分麻烦,而Vue更是没有为兄弟组件提供直接共享数据的办法。基于这个问题,许多框架提供了解决方案——使用全局的状态管理器,将所有分散的共享数据交由状态管理器保管,Vue也不例外。其中一种解决CORS 的方法, 在springboot项目中跨域的方法或类加上@CrossOrigin注解。

m0_61950264的博客 1906

k8s部署 普罗米修斯(Prometheus)监控

Prometheus是一个开源的服务监控系统和时序数据库其提供了通用的数据模型和快捷数据采集、存储和查询接口它的核心组件Prometheus服务器定期从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉 取数据新拉取到啊的 数据大于配置的内存缓存区时,数据就会持久化到存储设备当中。

D2961953033的博客 3855

'mvn-v' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

今天下载安装maven,配置出现了一些小小的问题,记录一下。 在cmd命令行中测试: 出现了’mvn-v’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 先说一下我的操作: 1.右击“此电脑”->“属性”->"高级系统设置”->"环境变量“ 新建一个系统变量 变量可以取你想取的名字 变量值是你的maven所在位置 比如我的就是: 注意这里不是lib所在的位置,不要弄...

qq_41795427的博客 4061

零代码进行单细胞数据全流程分析教程

我开发的本地电脑无限使用无限分析作图的生信零代码一键分析电脑软件神器OmicsTools 软件在github上的zihaoxingstudy1/OmicsTools仓库 中,大家可以下载安装OmicsTools进行各种生信分析和可视化作图。

qq_40073899的博客 3628

Maven配置和使用(一)

Maven配置和使用 Maven简介 如果我要是进行归类的,也会把Maven规划为SCM软件的一种,它也属于一种项目的管理工具,但是与传统的SVN等工具不同的是,Maven主要是进行开发包的管理。 现在的软件项目的开发绝对不可能自己从头写到尾,因为在这之中需要引入大量的第三方开发工具包,而我们对于这些开发包的引用,最初的做法:下载下来*.jar文件,而后在需要的地方拷贝到项目的WEB-IN...

wanghaoxin的博客 3万+

使用ExcelJS向XLSX单元格居中插入图片

本文记录了使用ExcelJS库向XLSX单元格里居中写入图片的方法。本文内容包括:xlsx 文件格式;xlsx 图片定位的长度单位;使用nativeColOff和nativeRowOff进行定位,不要使用官网给的定位方式;添加图片到数据表的总体流程和样例代码;注意事项等。

weixin_43678000的博客 3456

快速卷积结构FIR数字滤波器的设计与ARM平台实现

本文提出了一种基于快速卷积结构的FIR数字滤波器设计与实现方案。通过Matlab设计了满足特定指标的低通FIR滤波器,采用重叠-保存法和重叠-相加法两种快速卷积算法,将计算复杂度从O(N·M)降低到O(NlogN)。详细介绍了滤波器系数生成、性能验证流程,并提供了ARM平台C语言实现的关键技术,包括定点量化处理。实验结果表明,该方法能有效滤除混合信号中的高频干扰,保留目标1kHz正弦信号,验证了设计方案的有效性。

huanghm88的专栏 123

MAVEN利器:一文带你了解IDEA中如何使用Maven

在上一篇文章中,我们学习了如何在自己的电脑环境中安装MAVEN软件,但实际上我们日常使用中并不是一直在命令行中使用MAVEN的,我们更多的是基于IDEA编译器来使用MAVEN,那么我们今天就来学习如何在自己的IDEA中配置MAVEN。

fckbb的博客 8686

YOLO26剪枝 lamp剪枝测试精度仅掉0.7个点,速度提高11.8fps!

针对没有如何去选择剪枝的内容LAMP是层自适应幅度调整剪枝,无需任何参数,通过算法内部自己计算每个层的重要程度进行剪枝。基于权重重要程度和该层权重大小关系,权重越大表明该层越重要的思想进行优化。这个跟我前面说的非结构化全局剪枝是一个解法(MP),也就是lamp是在我前面那个非结构化剪枝的基础上进行优化的。但是这个逐层进行非结构剪枝目前还没有一个清晰的概念,确定每个层要剪枝多少。LAMP得分是一个平方权重大小,由层中所有“幸存权重”的总和归一化。

m0_64661770的博客 673

MAVEN的安装与配置以及配置MAVEN镜像为阿里云

MAVEN的安装与配置 如需配置MAVEN链接阿里云的镜像请直接查看 (三、配置MAVEN本地仓库 的第四步) 一、需要的东西 1.JDK(上一章已经详细讲解了https://blog.youkuaiyun.com/map_cx/article/details/89471218) 2.Eclipse 3.MAVEN的程序包 二、下载(因为MAVEN不需要安装) 1.下载: https://maven.ap...

胡椒码农的博客 5万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Maven的简介以及Maven安装配置

打开IDEA,点击菜单栏中的【File】选择【New Projects Settings】选择【Settings For New Projects】进入IDEA配置,找到【Build,Execution,Deployment】菜单栏中的【Build Tools】中找到Maven。那么我们可以将需要的依赖项的信息编写到Maven工程的配置文件,Maven软件就会自动下载并复制这些依赖项到项目中,也会自动下载依赖需要的依赖!通过 Maven,我们可以方便地维护项目所依赖的外部库,而我们仅仅需要编写配置即可。

2301_80309994的博客 2614

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

什么是Maven,Maven的概述及基本使用

Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档项目对象模型(Project Object Model)依赖管理模型(Dependency)插件(Plugin)提供了一套标准化的项目结构提供了一套标准化的构建流程(编译、测试、打包、发布…)提供了一套依赖管理机制依赖管理:依赖管理其实就是管理你项目所依赖的第三方资源(jar包、插件…)1.下载jar包2.复制jar包到项目。

宁可枝头抱香死,何曾吹落北风中。 4377

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

解决maven unresolved plugin 以及 如何控制maven plugin 的插件版本

最近在写一个项目的时候,有两个module,A是一个Spring boot,B是一个没有使用框架的module。 问题一: B库很长时间在执行Downloading plugins for,如果中途退出了idea,插件没有下载完,再次进入idea,会出现unresolved plugin的报错 分析: 这个问题可以通过两个方面来解决: 1、更改仓库地址,提高下载速度,一运行,很快...

薛瑄的博客 5万+

Maven

教你下载和配置Maven

xiaoyudecsdndec的博客 2207

Maven安装、配置、Maven集成到IDEA中

1.先maven官网下载maven.2.解压到D:\盘根目录下注意:不能放到中文目录。

2301_80220193的博客 2162

Maven项目缺少Maven Dependencies总结

本文通过总结网上各种maven项目没有Maven Dependencies的情况,结合自己所遇到的奇葩问题,综合成一片文章,希望给大家带来帮助。

Frankenstein的博客 1万+

Eclipse基于Maven配置SSM

Eclipse配置Maven环境 一.什么是maven? Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期 (Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段 (phase)中插件(plugin)目标...

guigu2012的专栏 4094

如何配置Maven

目录 1.配置MAVEN_HOME 2.修改系统变量的PATH 3.配置maven本地仓库 4.配置镜像 1.配置MAVEN_HOME 在系统环境变量下配置MAVEN_HOME,maven的所在文件夹如下,不需要加上bin 2.修改系统变量的PATH 将 %MAVEN_HOME%\bin加入到系统环境变量的PATH 3.配置maven本地仓库 打开你的maven文件夹,进入conf文件夹,打开settings.xml文件...

weixin_41531181的博客 5519

阿里云MAVEN/华为MAVEN/腾讯云MAVEN 仓库地址

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录1.阿里云MAVEN2.腾讯MAVEN3.华为MAVEN4.网易MAVEN 1.阿里云MAVEN <mirror> <id>aliyun</id> <name>aliyun Maven</name> <mirrorOf>*</mirrorOf> <url>http://maven.aliyun.com/nexus/cont

SherlockerSun的博客 6110

Maven学习—Maven环境搭建

Maven 提供是三个平台的安装包 MacOS、Windows、Linux。安装包解压解压即可以使用。

飞鸽FlyGo-把自己作为一款产品来打磨,提升产品的体验,锻造出最好的自己。 1661

Maven Wrapper的使用

Maven Wrapper是apache maven借鉴了gradle wrapper之后增加了的功能,可以为每个具体的项目添加一个专用的、指定版本的maven供其使用。takari官方说maven wrapper将会整合到apache maven 4.0里边,现在maven最新版本是3.8,等待好消息。

顺其自然~专栏 2629

Maven部署以及IntelliJ IDEA中创建部署Maven项目与运行Maven命令——详细篇

本篇博客主要讲解Maven的部署,包括下载安装,配置,更换国内阿里镜像,以及在IntelliJ IDEA中创建部署Maven项目与运行Maven命令。 Maven部署 内容涉及Maven的一些基础知识,可以关注我的博客,后续会更新关于Maven的学习笔记。 Maven的作用: (1)增加第三方jar以及处理jar之间的依赖关系 (2)将项目划分成若干模块。 Maven下载安装 由于Maven是基于Java平台的自动化构建工具,所以应该先安装JDK环境,这里我就默认大家都配置好了JDK环境。 (1)下载Mav

MACRosshaha的博客 3197
上一篇: 解决IDEA的"Cannot run program "git.exe": CreateProcess error=2, 系统找不到指定的文件"错误
下一篇: IntelliJ IDEA 设置代码提示或自动补全的快捷键
oldbig_lin
博客等级 码龄10年 78粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值