mvn 相关命令汇总

1、需求

   项目上一致是使用的mvn 进行打包, 对于项目上的一些mvn  命令,有时候会忘记,所以将mvn 汇总起来

2、命令汇总 

  ① mvn clean 

      将项目目录下的编译的文件清除掉,即target 文件夹的编译文件

    

② mvn complie

    编译项目的代码,生成class 文件到target文件夹下

③ mvn  test

    对项目进行运行测试

④  mvn package 

    打包文件并存放到项目的target 目录下,打包好的文件通常都是编译后的class 文件 

 

 ⑤ mvn install 

        在本地仓库生成仓库的安装包, 可供其他项目引用,同时打包后的文件放到项目的target 目录下。

⑥ mvn  deploy 

     完成了项目编译、单元测试 、打包功能,把打好的可执行jar包(war 包或者其他形式的包) 部署到本地maven 仓库,同时部署到maven 私服仓库

maven --- 依赖管理系统 

     通过maven 的依赖管理对项目所依赖的jar 进行统一管理,比如: 项目依赖 junit4.9, 通过在pom.xml 中定义junit 4.9 的依赖即使用junit 4.9 ,如下所示是junit 4.9 的依赖定义

<!--依赖关系 -->
<dependencies><!-- 此项目运行使用junit ,所以此项目依赖 junit --><dependency><!-- junit 的项目名称 --><groupId> junit</groupId><!-- junit 的模块名称 --><artifactId>junit</artifactId><!-- junit 版本 --><version>4.9</version><!-- 依赖范围:单元测试使用 junit --><scope>test</scope></dependency>
</dependencies>

3、拓展 

    ① 如何快速定位到所依赖的包的依赖的关系

     答: 这里通过 maven Hepler 来 排查对应的包依赖

          即 先在 插件市场中安装对应的依赖 maven Hepler 

          定位到项目所在的 pom 文件中,然后打开底部的 Dependency Analyzer 

 

然后查询图中的说明就可以找到对应的依赖

② maven中的pom 依赖中的build  是干啥的?

答: 

   resource 

      配置各个资源在maven 项目中的具体路径,用于包含或者排查某些资源文件,标签resource 包含一下元素

   

标签类型描述
targetPathString指定build后的resource 存放的文件夹,默认是basedir,通常被打包在jar 中的resource 的目标路径 META-INF
filteringString表示为这个resource,filter是否激活,默认为false
directoryString资源文件源路径,默认位于${basedir}/src/main/resources/目录下
includeList<String>一组文件名的匹配模式,被匹配的资源文件将构建过程处理
excludesList<String>一组文件名的匹配模式,被匹配的资源文件将被构建过程忽略
<build><filters><filter>filters/filter1.properties</filter></filters><resources><resource><targetPath>META-INF/plexus</targetPath><filtering>true</filtering><directory>${basedir}/src/main/plexus</directory><includes><include>configuration.xml</include></includes><excludes><exclude>**/*.properties</exclude></excludes></resource></resources></build>

 plugin 

    设置构建过程中需要的插件,标签plugin 包含以下元素

execution

   execution 元素包含了插件执行需要的信息  

   configuration  

           不管是plugin 还是execution 都有元素configuration,该标签包含的元素和插件执行目标相关,为插件执行目标提供自定义传参,所以configuration 内元素各不相同,和执行目标提供的对外参数相关。

<?xml version="1.0" encoding="UTF-8"?>
<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">...<build><plugins><!-- 使用spring-boot-maven-plugin打包独立可执行程序 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>1.4.2.RELEASE</version><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions><configuration><finalName>milkyway-pc</finalName><classifier>1.0-SNAPSHOT</classifier><outputDirectory>../target</outputDirectory></configuration></plugin></plugins></build>
</project>

上述使用了maven 常用插件 spring-boot-maven-plugin ,使用该插件的默认goal:  repackage(使用标签executions) ,该goal 会在mvn  package 之后,再次打包可执行的jar/war ,并将mvn package 生成的软件包重名为 *.original。 使用标签configuration 为插件 spring-boot-maven-plugin 传参,配置最终生成的jar包,注: 该configuration 内的元素可以参考插件spring-boot-maven-plugin 提供了哪些对外配置的参数

③ dependencyManagement 是干啥用的,它与dependencies 区别

       如果dependencies 里的dependency 自己没有声明version 元素,那么maven 就会到dependencyManagement 里面去找有没有对该artifactId 和groupId 进行版本生命,如果有,就继承它,如果没有就会报错,告诉你必须为dependency 生命一个version

     如果dependencies 中的denpendency 声明了version, 那么无论dependencyManagement 中有无该jar的version生命,都已dependency 里的version为准。     

 答: (1) dependencies 及时在子项目中不写该依赖,那么子项目仍然会从父项目中继承该依赖项(全部继承)

 (2)   dependencyManagemeent里只是声明依赖,并不实现引入

 (3) 因此子项目需要显示的声明需要用到的依赖,如果不在子项目中声明依赖,是不会从父项目中继承下来的,只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项。并且version和scope 都读取父pom, 另外如果子项目中指定了版本号,那么会使用子项目中指定jar版本

      (简单来说就说,父级dependencyManagemeent 只是定义了版本,并不引入。)

<dependencyManagement> <dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.17.0</version> </dependency> </dependencies> 
</dependencyManagement> 

 会实际下载的jar包:

  <dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.17.0</version> </dependency> 
</dependencies>  

④  plugins 和pluginManagement 的区别

  

    pluginsManagement 是表示插件生命,即你在项目中的pluginManagement下声明了插件,Maven 不会加载该插件,pluginManagement 声明可以被继承。 

      pluginManagement 一般是用在父 pom中定义,提供给子pom 使用,子pom也可以覆盖这个定义,而且你在父pom中定义了版本之后,子模板直接应用groupId 和 artifactId ,而不指定版本。

      plugins就是直接引入一个plugin,而且可以绑定到maven 相关的声明周期上

      pluginManagement 主要是为了统一管理插件,确保所有子pom使用的插件版本保持一致。

<pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.1</version><configuration><attach>true</attach></configuration><executions><execution><phase>compile</phase><goals><goal>jar</goal></goals></execution></executions></plugin></plugins>
</pluginManagement>

子pom 

   

<plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId></plugin>
</plugins>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring boot2.7整合jetcache方法缓存

前面的文章 我们讲了 spring boot 整合 jetcache 做基本字符串数据缓存 但是 我这里有个这样的逻辑 我的 domain 包下 有一个 book 属性类 里面就 id 和 name 属性 设置了 对应的 set get函数 和一个整体的构造函数 package com.example.javadom.domain;public class book {pr…

TrueNAS怎么设置中文,最新2024版本安装详细说明

首先我们做好安装前的准备工作 1&#xff0c;ISO镜像安装包 2&#xff0c;虚拟机&#xff08;建议使用ESXI虚拟机环境&#xff09; 如果是物理机安装&#xff0c;建议先给底层安装虚拟机系统esxi&#xff0c;再在上面安装方便以后的管理&#xff0c;如果你想物理机直接安装&a…

3.15消费者权益保护教育宣传活动怎样联系媒体投稿宣传?

在315金融消费者权益保护教育宣传活动中,想要有效地联系媒体报道并进行便捷宣传,可以通过以下步骤来利用智慧软文发布系统进行操作: 1. 准备宣传素材: - 制作高质量的新闻稿件,内容应围绕金融消费者权益保护的主题,包含活动的目的、特色、实施计划、预期影响、参与方式等细节;…

怎么看一手伦敦银多少钱?

做伦敦银投资的朋友需要搞清楚“一手伦敦银多少钱”的问题&#xff0c;这也是伦敦银交易的基础问题。为什么需要搞清楚这个基础问题呢&#xff1f;有些基础问题我们不需要搞懂&#xff0c;但是关于一手伦敦银多少钱却需要搞清楚&#xff0c;因为这决定了投资者的资金利用率。 关…

复合材料热压机比例阀放大器

复合材料热压机动作主要依赖于其内置的液压系统。是工业生产中常用的设备&#xff0c;通过施加高温和高压来实现对材料的压制成型。为了确保热压板能够精确地上下移动以及保持所需的压力&#xff0c;通常会使用液压系统来控制。液压系统中必不可少的需要比例阀来控制油缸的运行…

【数字孪生】Nginx发布数字孪生三维建模模型服务及调用方法

【数字孪生】Nginx发布数字孪生三维建模模型服务及调用方法 一、需求二、实施步骤2.1 准备模型文件2.1.1 3D tiles模型2.1.2 3D Tiles标准文件格式 2.2 配置nginx server块2.2.1 Nginx能干啥 2.3 访问 三、实现效果 一、需求 利用三维渲染引擎Cesium加载3D tiles模型。 二、实…

下载JDK17版本详细教程(下载、安装、环境变量配置)

官网下载 Oracle 甲骨文中国 | 云应用和云平台 安装 更改自己的安装位置。点击下一步&#xff0c;记住自己的安装位置 环境配置 右键此电脑点击属性---高级系统设置----环境变量 在系统变量里面点击新建环境变量JAVA_HOME&#xff0c;下面填入自己的jdk安装地址&#xff0c…

关于微服务跨数据库联合查询的一些解决思路

微服务架构的一个非常明显的特征就是一个服务所拥有的数据只能通过这个服务的API来访问。通过这种方式来解耦&#xff0c;这样就会带来查询问题。以前通过join就可以满足要求&#xff0c;现在如果需要跨多个服务集成查询就会非常麻烦。 解决思路 下面提供几个思路仅供参考 表…

【鸿蒙HarmonyOS开发笔记】常用组件介绍篇 —— Toggle切换按钮组件

概述 Toggle为切换按钮组件&#xff0c;一般用于两种状态之间的切换&#xff0c;例如下图中的蓝牙开关。 参数 Toggle组件的参数定义如下 Toggle(options: { type: ToggleType, isOn?: boolean })● type type属性用于设置Toggle组件的类型&#xff0c;可通过ToggleType枚举…

python异常:pythonIOError异常python打开文件异常

1.python读取不存在的文件时&#xff0c;抛出异常 通过 open()方法以读“r”的方式打开一个 abc.txt 的文件&#xff08;该文件不存在&#xff09;&#xff0c;执行 open()打开一个不存在的文件时会抛 IOError 异常&#xff0c;通过 Python 所提供的 try...except...语句来接收…

linux查看服务器登录成功和登录失败的命令

last 查看成功登录服务器的信息&#xff0c;包括ip&#xff0c;时间&#xff0c;登录用户&#xff0c;时长。lastb 查看登录服务器失败的信息。 last命令实例&#xff1a; 其他参数&#xff1a; -a&#xff1a;把从何处登入系统的主机名称或ip地址&#xff0c;显示在最后一行…

.rmallox勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言&#xff1a; 近年来&#xff0c;勒索病毒的威胁日益增加&#xff0c;其中一种名为.rmallox的勒索病毒备受关注。这种病毒通过加密文件并勒索赎金来威胁受害者。本文将介绍.rmallox勒索病毒的特点&#xff0c;以及如何恢复被其加密的数据文件&#xff0c;并提供预防措施&a…

Css提高——flex布局及其相关属性

目录&#xff1a; 1、传统布局与flex布局的区别 2、flex的布局原理 3、flex常见的父项属性 3.1、flex-direction &#xff1a;设置主轴的方向 3.2、justify-content 设置主轴上的子元素排列方式 3.3、flex-wrap 设置子元素是否换行 3.4、align-items 设置侧轴上的子元素排…

Linux:系统初始化,内核优化,性能优化(1)

我们安装好了一个服务器之后&#xff0c;一定要对他的系统&#xff0c;内核&#xff0c;性能一系列进行一个优化&#xff0c;否则当大并发的情况下很可能出现问题&#xff0c;我把要优化的东西直接罗列出来并介绍&#xff0c;后期可以直接编写一个脚本拿到服务器上直接用就行 …

在深圳,为什么硬件工程师的待遇还不如软件?

深圳触觉智能科技有限公司 硬件明明比软件更难&#xff0c;为何在国内… 硬件明明比软件更难&#xff0c;但硬件工程师待遇却不如软件工程师&#xff0c;硬件工程师常被忽视&#xff0c;被视为可轻易模仿的“配角”&#xff0c;默默付出却鲜获认可。比如八年以上的资深硬件工…

2024年普通人的创业机会在哪里?2024热门创业项目!2024普通人想翻身的风口行业!

创业千万别冲动&#xff0c;社区团购代理创业失败案例&#xff01; 是不是一开始挺看好这个赛道&#xff0c;看别人做的风生水起&#xff0c;以为不难&#xff0c;真正开始做才发现不好做&#xff0c;没有先天优势&#xff0c;货源和客源从零开始积累&#xff0c;开始就是摸着石…

Java 世界破破烂烂,电音小猫缝缝补补

Java 世界破破烂烂&#xff0c;电音小猫缝缝补补 Java 通用代码生成器光 2.4.0 电音之王尝鲜版六正在研发&#xff0c;昨天发布了介绍视频&#xff0c;请见&#xff1a; https://www.bilibili.com/video/BV1yD421j7UP/ 电音之王尝鲜版六支持哑数据模式&#xff0c;支持枚举。…

学嵌入式真的很烧钱吗?

如果是走嵌入式单片机方向&#xff0c;这篇内容&#xff0c;很适合预算1000以下的&#xff0c;作为发育参考。 下面是我2011年的入行成本&#xff1a; 买了智能小车&#xff0c;还有51开发板&#xff0c;杂七杂八&#xff0c;可能一共不到1000。 一开始迷之自信了&#xff0c;买…

软件测试方法 -- 等价类边界值

测试用例的定义 测试用例是为了特定的目的而设计的一组测试输入、执行条件和预期的结果&#xff0c;以便测试是否满足某个特定需求。通过大量的测试用例来检验软件的运行效果&#xff0c;他是指导测试工作进行的依据。 下面我们介绍几种常用的黑盒测试方法 等价类划分法 定…