【Maven】一篇带你了解Maven项目管理工具

目录

  • 项目管理工具Maven
    • 初识Maven
      • 什么是Maven
      • 为什么使用Maven
      • Maven功能
      • 什么是项目构建
      • 什么是依赖管理
      • Maven应用场景
      • Maven项目结构
      • Maven特点
      • Maven模型
    • Maven安装
      • 安装准备
      • Maven安装目录分析
      • 环境变量配置
    • 创建Maven项目
      • 通过IDEA创建
      • 手动创建
      • 手动引入依赖
    • 配置Maven仓库
      • Maven仓库概念
      • Maven仓库布局
      • Maven本地仓库配置
      • Maven远程仓库配置
    • Maven项目视图

项目管理工具Maven

初识Maven

什么是Maven

Maven是跨平台的项目管理工具。主要服务基于Java平台的项目构建,依赖管理和项目信息管理。

它是 Apache 下的一个纯 Java 开发的开源项目,Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目。

为什么使用Maven

Java生态十分丰富,无论我们想实现什么功能,几乎都可以找到对应的工具类,而这些工具类都是以jar包的形式出现的。

这些jar包之间会有关联,在使用一个依赖之前还需要确定这个依赖所依赖的其他依赖。所以当我们的项目比价大的时候,这些依赖管理会变得十分臃肿,我们可以利用Maven解决这个问题。

同时它可以管理各种项目,如C#,Ruby等等

Maven可以处理多模块项目。对于简单的项目,我们单模块分包处理即可,但是如果项目比较复杂,要做成多模块项目,比如一个音乐盒,我们会有用户模块,服务端模块,图片模块等等,这些模块单独是无法运行的,我们需要将它们整合,我们借助Maven可以一键打包。

当我们使用Maven进行管理的时候,我们通过定义一个项目对象模型——POM来详细描述我们自己的项目配置,我们可以理解为Maven项目的配置文件。

Maven功能

Maven可以帮助我们开发者完成一下工作:

  • 项目构建
  • 文档生成
  • 依赖管理
  • 日志报告
  • 发布
  • 分发
  • 等等其他功能

什么是项目构建

项目构建:是一个从编写源代码到编译、测试、运行、打包、部署的过程。

  • 传统项目和maven项目构建的两种方式

    • 传统项目:

      打开Idea编写源代码和配置文件,对源代码进行编译,可以使用Junit进行单元测试,把项目打成war包,部署到Tomcat服务器中运行。

    • maven项目:

      maven将项目构建过程进行标准化,每个阶段都可以使用一个命令来完成。

      清理 --> 编译 --> 测试 --> 报告 --> 打包 --> 部署

      好处:

      可以通过命令完成项目构建。(测试:使用mvn tomcat:run的命令来发布运行项目)maven对每个构建阶段进行规范,有利于大型团队协作开发。

在这里插入图片描述

什么是依赖管理

对第三方依赖包的管理,可以连接互联网下载项目所需第三方jar包。

对自己开发的模块的管理,可以像引用第三方依赖包一样引用自己项目的依赖包。

在这里插入图片描述

Maven应用场景

Maven的应用场景,开发人员只要按着maven标准的目录结构进行开发即可,然后提交代码。在测试服务器上拉取Java源码,然后可以使用maven的自动化项目构建完成项目的清理、编译、测试、打包和安装部署等。

在这里插入图片描述

Maven项目结构

Maven项目提倡使用一个共同的标准目录结构,如下所示:

如下所示:

目录目的
${basedir}存放pom.xml和所有的子目录
${basedir}/src/main/java项目的java源代码
${basedir}/src/main/resources项目的资源,比如说property文件,springmvc.xml
${basedir}/src/test/java项目的测试类,比如说Junit代码
${basedir}/src/test/resources测试用的资源
${basedir}/src/main/webapp/WEB-INFweb应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面
${basedir}/target打包输出目录
${basedir}/target/classes编译输出目录
${basedir}/target/test-classes测试编译输出目录
Test.javaMaven只会自动运行符合该命名规则的测试类
~/.m2/repositoryMaven默认的本地仓库目录位置 可以在Maven的settings.xml配置文件中自己更改自己的本地仓库

Maven特点

  • 项目设置遵循统一的规则。
  • 任意工程中共享。
  • 依赖管理包括自动更新。
  • 一个庞大且不断增长的库。
  • 可扩展,能够轻松编写 Java 或脚本语言的插件。
  • 只需很少或不需要额外配置即可即时访问新功能。
  • 基于模型的构建 − Maven能够将任意数量的项目构建到预定义的输出类型中,如 JAR,WAR 或基于项目元数据的分发,而不需要在大多数情况下执行任何脚本。
  • 项目信息的一致性站点 − 使用与构建过程相同的元数据,Maven 能够生成一个网站或PDF,包括您要添加的任何文档,并添加到关于项目开发状态的标准报告中。
  • 发布管理和发布单独的输出 − Maven 将不需要额外的配置,就可以与源代码管理系统(如 Subversion 或 Git)集成,并可以基于某个标签管理项目的发布。它也可以将其发布到分发位置供其他项目使用。Maven 能够发布单独的输出,如 JAR,包含其他依赖和文档的归档,或者作为源代码发布。
  • 向后兼容性 − 您可以很轻松的从旧版本 Maven 的多个模块移植到 Maven 3 中。
  • 子项目使用父项目依赖时,正常情况子项目应该继承父项目依赖,无需使用版本号,并行构建 − 编译的速度能普遍提高20 - 50 %。
  • 更好的错误报告 − Maven 改进了错误报告,它为您提供了 Maven wiki 页面的链接,您可以点击链接查看错误的完整描述。

Maven模型

在这里插入图片描述

Maven安装

安装准备

  • 安装JDK1.8或以上

    JDK下载地址:Java Downloads | Oracle 中国

    进入下载页面之后我们去下面找我们需要的JDK版本:

    在这里插入图片描述

  • 安装Maven

    Maven下载地址:Maven – Download Apache Maven

    进去之后推荐的是Maven3.9,同样,你可以在下面找到你想要的Maven版本,这里我就不再安装,我直接使用idea2024自带的Maven插件,版本是Maven3.9.8,可以在idea的plugin目录中找到它的安装目录,我的目录是这样的:D:\IDEA\IntelliJ IDEA 2024.2.3\plugins\maven\lib\maven3

    解压的时候注意目录不要带中文

    在这里插入图片描述

Maven安装目录分析

解压缩之后你应该可以在你的解压目录下看到这几个文件,我们来解释一下这些都存放了一些什么文件:

在这里插入图片描述

  • bin:含有mvn运行的脚本

  • boot:含有plexus-classworlds类加载器框架

  • conf:含有settings.xml配置文件

  • lib:含有Maven运行时所需要的java类库

  • LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍

环境变量配置

为什么要配置环境变量?

方便我们在任何地方都可以使用Maven,而不是每次都需要跳转到maven\bin目录下去操作这些可执行文件

同时简化了命令行操作;为不同的环境设置不同的配置;方便开发工具或应用程序通过环境变量获取配置信息等等,

  1. 设置MAVEN_HOME环境变量

    这样配置我们在改变Maven版本的时候只需要重新设置MAVEN_HOME环境变量即可,无需修改Path中的系统环境变量

    在这里插入图片描述

    这里我们定位到Maven的解压目录即可

  2. 设置Path环境变量,把 %MAVEN_HOME%\bin 添加到Path的变量值末尾,与前面的内容用 ; 隔开,如图:

    在这里插入图片描述

  3. 配置完成之后我们在控制台进行验证:

    在这里插入图片描述

创建Maven项目

我们按照上面给出的Maven项目结构创建出我们的第一个Maven项目,

通过IDEA创建

我们先来看idea内置的Maven构建工具如何创建一个普通的Maven项目,这里我以IntelliJ IDEA 2024.2.3版本为例,如果你是其他版本的IDEA,可以去找对应版本的构建方式:

  1. 我们选择新建项目

    在这里插入图片描述

  2. 我们创建普通Maven项目,直接选择Java,然后右边的构建系统选择Maven,不要选择下面Maven骨架生成器,会带一些不必要的格式:

    在这里插入图片描述

    这里的groupIdartifactId指的是我们后面要说的Maven坐标,用于定位我们的Maven项目这里说一下groupId一般是公司名字的反写,后面做详细解释

  3. 点击创建之后我们就创建好了我们的第一个Maven项目,但是在第一次创建的时候我们需要进行一些设置:

    我们转到文件—>设置—>构建、执行、部署—>构建工具—>Maven,其中的Maven主路径选择你Maven解压的路径,下面的用户设置文件你也可以自己手动指定,本地仓库idea会自动读取settings.xml中指定的本地仓库,同样你也可以进行重写,指向你想要的仓库

    在这里插入图片描述

  4. 设置完之后我们点击应用,这样我们该项目的Maven设置就配置好了,但是我们不想每次创建新Maven项目的时候都进行一次这样的设置,所以我们来到文件—>新建项目设置—>新项目的设置—>构建、执行、部署—>构建工具—>Maven,按照上面我们的设置再设置一遍就可以了

    在这里插入图片描述

这就是我们创建好的Maven项目:

在这里插入图片描述

手动创建

为了深入了解Maven项目的具体结构,我们来根据项目结构手动创建一遍,一般不会手动创建:

  • src/main/java —— 存放项目的.java文件

  • src/main/resources —— 存放项目资源文件,如spring, mybatis配置文件

  • src/test/java —— 存放所有测试.java文件,如JUnit测试类

  • src/test/resources —— 测试资源文件

  1. 这里我的根目录是D:\JAVAProject\HelloMaven,这个可以自己选择

    在这里插入图片描述

  2. 创建好以上文件夹之后,我们还不能将他称为Maven项目,我们需要在根目录添加pom.xml,也就是我们的Maven项目核心,并将下面这段代码复制进去(你可以先创建成txt文件,填入内容之后再修改后缀名为xml):

    <?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">
        <modelVersion>4.0.0</modelVersion>
    
        <!-- 这里如果你不想使用这个打包路径可以自己改 -->
        <groupId>com.qcby</groupId>
        <!-- 如果你的项目名称和我不一样,这里也需要修改成你自己的项目名称 -->
        <artifactId>HelloMaven</artifactId> 
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
        
         <!-- 这里用于引入依赖,JUnit用于测试类 -->
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.1</version>
                <scope>test</scope>
            </dependency>	
    	</dependencies>
    
    </project>
    
  3. 创建Hello.java文件,在src/main/java/cn/tx/maven目录下新建文件Hello.java,这里/cn/tx/maven这个路径你按你喜好自己设置,并将下面的代码放入其中:

    package cn.tx.maven; // 如果你路径改了,这里也需要修改,这里代表的是你此项目所在的包的位置
    public class Hello {
    	public String sayHello(String name){
    		return "Hello "+name+"!";
    	}
    }
    
    
  4. 创建HelloTest.java文件,在/src/test/java/cn/tx/maven目录下新建测试文件HelloTest.java,将下面的代码放入其中:

    package cn.tx.maven; // 你自己看着办
    import org.junit.Test;
    import static junit.framework.Assert.*;
    public class HelloTest {
    	@Test
    	public void testHello(){
    		Hello hello = new Hello();
    		String results = hello.sayHello("maven");
    		assertEquals("Hello maven!",results);		
    	}
    }
    
  5. 到此为止我们的Maven项目算是手动创建成功了,我们可以在控制台对这个项目进行一些操作:

    1. 打开cmd命令行,进入Hello项目根目录执行 mvn compile命令,查看根目录变化

    2. cmd 中继续录入mvn clean命令,然后再次查看根目录变化

    3. cmd 中录入 mvn clean compile命令, 查看根目录变化

    4. cmd 中录入 mvn clean test命令,查看根目录变化

    5. cmd 中录入 mvn clean package命令,查看根目录变化

    6. cmd 中录入 mvn clean install 查看仓库会把项目安装到仓库里

    这些命令我们之后还会提到,这里先看看你的项目根目录变化就好,有一些变化会发生在新生成的target文件夹下

手动引入依赖

我们来手动完成一下Maven引入依赖的过程

  1. 首先按照上面的步骤我们再来新建一个Maven项目,我把他命名为:HelloFriend,但是这次我们在pom文件中将我们的HelloMaven项目作为依赖引入我们当前的HelloFriend

    <?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">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.qcby.maven</groupId>
        <artifactId>HelloFriend</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <dependencies>
    
            <!-- https://mvnrepository.com/artifact/junit/junit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.1</version>
                <scope>test</scope>
            </dependency>
    		<!-- 将之前的HelloMaven01当作依赖引入 -->
            <dependency>
    	        <groupId>com.qcby.maven</groupId>
    	        <artifactId>HelloMaven01</artifactId>
    	        <version>1.0-SNAPSHOT</version>
    	        <scope>compile</scope>
            </dependency>	
            
        </dependencies>
    
    </project>
    
  2. 创建HelloFriend.java文件,在src/main/java/cn/tx/maven目录下新建文件HelloFriend.java

    package cn.tx.maven;
    
    import cn.tx.maven.Hello; // 引入上面的Hello类
    
    public class HelloFriend {
    
    	public String sayHelloToFriend(String name){
    		
    		Hello hello = new Hello();
    		String str = hello.sayHello(name)+" I am "+this.getMyName();
    		System.out.println(str);
    		return str;
    	}
    	
    	public String getMyName(){
    		return "John";
    	}
    }
    
  3. 创建HelloFriendTest.java文件,在/src/test/java/cn/tx/maven目录下新建测试文件HelloFriendTest.java

    package cn.tx.maven;
    
    import cn.tx.maven.Hello;
    
    public class HelloFriend {
    
    	public String sayHelloToFriend(String name){
    		
    		Hello hello = new Hello();
    		String str = hello.sayHello(name)+" I am "+this.getMyName();
    		System.out.println(str);
    		return str;
    	}
    	
    	public String getMyName(){
    		return "John";
    	}
    
    }
    
  4. 然后我们对HelloFriend项目进行测试打包,在HelloFriend目录下执行命令mvn package,如果你在之前的HelloMaven项目中没有执行过mvn clean install命令的话,那你就会得到这样一个结果:

    在这里插入图片描述

    系统报错提示:Could not find artifact com.qcby.maven:HelloMaven:jar:1.0-SNAPSHOT也就是没办法找到我们想要的依赖HelloMaven.jar

    故此我们需要重新构建第一个项目HelloMaven并安装到仓库,在命令行HelloMaven根目录下执行mvn clean install

    在这里插入图片描述

    此时再次对HelloFriend进行打包:

    在这里插入图片描述

    可以发现成功了

配置Maven仓库

Maven仓库概念

用来统一存储所有Maven共享构建的位置就是仓库,Maven有三种仓库类型:

Maven有3种仓库类型:本地仓库、私服仓库、中央仓库

仓库类型说明
本地仓库就是你自己电脑上的仓库,每个人电脑上都有一个仓库 默认位置在当前用户名.m2\repository 你也可以在配置文件中定义自己的仓库路径
私服仓库一般来说是公司内部搭建的Maven私服,处于局域网中,访问速度较快 这个仓库中存放的jar 一般就是公司内部自己开发的jar
中央仓库由Apache 团队来维护,包含了大部分的jar 早期不包含Oracle 数据库驱动,从 2019 年8月开始,包含了Oracle驱动

现在存在3个仓库,那么jar包如何查找呢?

在这里插入图片描述

大概是这样一个顺序

Maven仓库布局

  • 根据Maven坐标定义每个构建在仓库中唯一存储路径
  • groupId/artifactId/version/artifactId-version/packaging

这些坐标可以帮我们定位一个仓库中的jar包的位置

Maven本地仓库配置

我们通过修改Maven配置文件settings.xml中的本地仓库路径,定义自己的本地仓库

在这里插入图片描述

Maven远程仓库配置

如果不配置镜像源的话,Maven会自动从中央仓库下载我们的依赖,可能会导致下载慢或者链接不上的情况,我们可以配置镜像源,来替代中央仓库:在mirrors标签中添加:

<!-- 阿里镜像 -->
<mirror>
	<id>aliyun</id>
	<mirrorOf>central</mirrorOf>
	<name>aliyun Maven</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

就可以替代中央仓库,使用阿里镜像源来下载依赖,提高下载速度,当然你可以选择其他的镜像源。

在这里插入图片描述

Maven项目视图

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

工业物联网关-TCP透传

TCP透传功能提供类似于DTU(Data Transmit Unit)的功能&#xff0c;用户在网络端使用TCP协议连接网关&#xff0c;与串口通道绑定&#xff0c;建立起TCP与串口的通道&#xff0c;网关相当于一个中转点。 菜单选择"数据上行-tcp透传"&#xff0c;查看当前透传通道列表&…

《知道做到》

整体看内容的信息密度较低。绿灯思维、积极心态、反复练习值得借鉴。 引言 行动是老子&#xff0c;知识是儿子&#xff0c;创造是孙子&#xff01;行是知之始&#xff0c;知是行之成。 前言 工作中最让你失望的事情是什么&#xff1f; 一个人行为的改变总是先从内心想法的转…

【设计模式系列】装饰器模式

目录 一、什么是装饰器模式 二、装饰器模式中的角色 三、装饰器模式的典型应用场景 四、装饰器模式在BufferedReader中的应用 一、什么是装饰器模式 装饰器模式是一种结构型设计模式&#xff0c;用于在不修改对象自身的基础上&#xff0c;通过创建一个或多个装饰类来给对象…

TrickMo 安卓银行木马新变种利用虚假锁屏窃取密码

近期&#xff0c;研究人员在野外发现了 TrickMo Android 银行木马的 40 个新变种&#xff0c;它们与 16 个下载器和 22 个不同的命令和控制&#xff08;C2&#xff09;基础设施相关联&#xff0c;具有旨在窃取 Android 密码的新功能。 Zimperium 和 Cleafy 均报道了此消息。 …

【Router】路由器中NAT、NAPT、NPT是什么?

参考链接 NAT vs. NAPT: What’s the Difference? IPv6 Network Prefix Translation (NPt) | pfSense Documentation (netgate.com) 趣谈NAT/NAPT的原理&#xff0c;这篇不可不读&#xff01; - 知乎 (zhihu.com) NAT (Network Address Translation) NAT说明 NAT&#x…

c++应用网络编程之十一Linux下的epoll模式基础

一、epoll模式 在前面分析了select和poll两种IO多路复用的模式&#xff0c;但总体给人的感觉有一种力不从心的感觉。尤其是刚刚接触底层网络开发的程序员&#xff0c;被很多双十一千万并发&#xff0c;游戏百万并发等等已经给唬的一楞一楞的。一听说只支持一两千个并发&#x…

【Linux】Linux进程地址空间

1.程序地址空间分配回顾 在前⾯C语⾔以及C部分介绍过⼆者的内存分配如下图所示&#xff1a; 全局变量区和未初始化全局变量区也被称为数据区&#xff0c;数据区中除了有全局变 量&#xff0c;还有静态变量和常量 使⽤下⾯的代码演示不同的内容所处的地址&#xff1a; #includ…

Element-ui官方示例(Popover 弹出框)

Element-ui官方示例&#xff08;Popover 弹出框&#xff09;&#xff0c;好用的弹出框。 使用 vue-cli3 我们为新版的 vue-cli 准备了相应的​Element 插件​&#xff0c;你可以用它们快速地搭建一个基于 Element 的项目。 使用 Starter Kit 我们提供了通用的项目模版&#…

深入探讨C++多线程性能优化

深入探讨C多线程性能优化 在现代软件开发中&#xff0c;多线程编程已成为提升应用程序性能和响应速度的关键技术之一。尤其在C领域&#xff0c;多线程编程不仅能充分利用多核处理器的优势&#xff0c;还能显著提高计算密集型任务的效率。然而&#xff0c;多线程编程也带来了诸…

Redis应用高频面试题

Redis 作为一个高性能的分布式缓存系统,广泛应用于后端开发中,因此在后端研发面试中,关于 Redis 的问题十分常见。 本文整理了30个常见的 Redis 面试题目,涵盖了 Redis 的源码、数据结构、原理、集群模式等方面的知识,并附上简要的回答,帮助大家更好地准备相关的面试。 …

【Windows】【DevOps】Windows Server 2022 采用WinSW将一个控制台应用程序作为服务启动(方便)

下载WinSW 项目地址&#xff1a; GitHub - winsw/winsw: A wrapper executable that can run any executable as a Windows service, in a permissive license. 下载地址&#xff1a; https://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exe 参考配置模…

深度学习 之 模型部署 使用Flask和PyTorch构建图像分类Web服务

引言 随着深度学习的发展&#xff0c;图像分类已成为一项基础的技术&#xff0c;被广泛应用于各种场景之中。本文将介绍如何使用Flask框架和PyTorch库来构建一个简单的图像分类Web服务。通过这个服务&#xff0c;用户可以通过HTTP POST请求上传花朵图片&#xff0c;然后由后端…

Nginx(Linux):服务器版本升级和新增模块

目录 1、概述2、使用Nginx服务信号完成Nginx升级2.1 备份当前版本的Nginx2.2 向服务器导入新的Nginx2.3 向服务器导入新的Nginx2.4 停止老版本Nginx 3、使用Nginx安装目录的make命令完成升级3.1 备份当前版本的Nginx3.2 向服务器导入新的Nginx3.3 执行更新命令 1、概述 如果想…

E41.【C语言】练习:斐波那契函数的空间复杂度的计算及函数调用分析

目录 1.题目 2.解 Fib嵌套函数调用细则的分析 调用堆栈分析 之后的具体内容见视频 附:一张核心图 附:一张堆栈图 注意 1.题目 求下列代码的时间复杂度 long long f(size_t n) {if(n < 3)return 1;return f(n-1) f(n-2); } 2.解 显然是递归算法(递归讲解见35.【…

推荐一款多显示器管理工具:DisplayMagician

DisplayMagician是一款开源工具&#xff0c;专为Windows用户设计&#xff0c;能够通过一个快捷方式轻松自动配置屏幕和声音。它特别适合游戏玩家和应用程序用户&#xff0c;可以实现屏幕配置、声音设备切换以及启动额外程序等功能&#xff0c;最后在游戏或应用程序关闭时&#…

实现vlan间的通信

方法一&#xff1a;单臂路由 概述 单臂路由是一种网络配置&#xff0c;它允许在路由器的一个物理接口上通过配置多个子接口来处理不同VLAN的流量&#xff0c;从而实现VLAN间的通信。 原理 路由器重新封装MAC地址&#xff0c;转换Vlan标签 基础模型 1、配置交换机的链…

Vxe UI vue vxe-table grid 如何滚动、定位到指定行或列

Vxe UI vue vxe-table vxe-grid 在表格中有时候需要对数据会列进行操作。可以会定位到某一行或某一列&#xff0c;vxe-table 中提供了丰富的函数式 API&#xff0c;可以轻松对行与列进行各种的灵活的操作。 定位到指定行与列 通过调用 scrollColumn(columnOrField) 方法&…

阿里云云盘在卸载时关联到PHP进程,如何在不影响PHP进程情况下卸载磁盘

1.问题&#xff1a; 在使用umount /dev/vdc1 卸载磁盘时&#xff0c;提示如下&#xff0c;导致无法在Linux系统下卸载磁盘 umount /dev/vdc1 umount: /var/www/html/*/eshop/IFile3: target is busy.(In some cases useful info about processes that usethe device is found…

WPF -- LiveCharts的使用和源码

LiveCharts 是一个开源的 .NET 图表库&#xff0c;特别适用于 WPF、WinForms 和其他 .NET 平台。它提供了丰富的图表类型和功能&#xff0c;使开发者能够轻松地在应用程序中创建动态和交互式图表。下面我将使用WPF平台创建一个测试实例。 一、LiveCharts的安装和使用 1.安装N…

网盘直链下载神器NDM

工具介绍 ​Neat Download Manager分享一款网盘不限速神器,安装步骤稍微有一点繁琐,但实际体验下载速度飞快,个人实际体验还是非常不错的 NDM是一款免费且强大的下载工具。可以帮助你下载各种文件&#xff0c;还能够在多任务下载中保持出色的速度及其稳定性 通过网盘分享的文…