news 2026/8/24 12:02:12

Maven从入门到精通:核心概念、安装配置与实战避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Maven从入门到精通:核心概念、安装配置与实战避坑指南

1. 项目概述:为什么我们需要Maven?

如果你刚开始接触Java开发,或者刚从其他语言转过来,面对一个项目里动辄几十上百个Jar包依赖,是不是会感到头皮发麻?哪个版本和哪个版本兼容?这个包又依赖了另外哪几个包?手动下载、管理、添加到构建路径,简直就是一场噩梦。我刚开始做Java那会儿,项目里有个lib文件夹,里面塞满了各种版本的Jar,每次更新依赖都像在玩扫雷,一不小心就“爆炸”。直到后来用上了Maven,才真正体会到什么叫“解放生产力”。

简单来说,Maven是一个项目构建和依赖管理工具。它的核心价值就两点:标准化自动化。它通过一个名为pom.xml的配置文件,定义你的项目是什么、需要什么、以及如何构建它。从此,你不再需要手动搜索和下载Jar包,只需要在pom.xml里声明一句“我需要Spring Boot 2.7.0”,Maven就会自动从中央仓库下载它,并且连它依赖的几十个其他包(我们称之为传递性依赖)也一并处理好。构建过程,无论是编译、测试、打包还是部署,也都变成了一条简单的命令。

网上教程很多,但要么过于简略只讲安装,要么一上来就抛出复杂的概念让人望而却步。这篇教程的目标是成为你手边最详尽的那份“操作手册”和“避坑指南”。我会从零开始,带你走过安装、配置、核心概念理解、日常使用、到高级配置和疑难排查的全过程。无论你是要在Windows、Mac还是Linux上配置,无论你用的是IntelliJ IDEA、VS Code还是Eclipse,无论你遇到依赖冲突、仓库无法访问还是构建失败的问题,这里都有对应的解决方案和原理解释。我们不只是学“怎么用”,更要弄懂“为什么这么用”。

2. Maven核心概念与工作原理深度解析

在动手之前,我们必须先理解Maven的几个核心概念。这就像学开车前得知道方向盘、油门、刹车是干嘛的,否则直接上路就是灾难。

2.1 坐标(Coordinates):Maven世界的“身份证”

在Maven中,任何一个构件(Jar包、War包等)都由一组唯一的坐标来标识。这组坐标就像它的身份证号,由三个基本元素组成:

  • groupId: 通常代表公司或组织,使用反向域名规则。例如,org.springframework
  • artifactId: 项目的名称。例如,spring-boot-starter-web
  • version: 项目的版本号。例如,2.7.0

有了这三个信息,Maven就能在全球的仓库网络中精准定位到它。在pom.xml中,一个依赖的声明看起来是这样的:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.7.0</version> </dependency>

有时候你还会看到<packaging>(打包方式,默认为jar)和<classifier>(用于区分从相同代码构建出的不同构件,如jdk8jdk11版本),它们共同构成了完整的坐标。

2.2 POM(Project Object Model):项目的“蓝图”

pom.xml是Maven项目的核心。它不仅仅是一个依赖列表,更是一份完整的项目描述文件。你可以把它想象成建筑工程的蓝图。它定义了:

  • 项目基本信息:坐标、名称、描述、开发者信息。
  • 依赖关系:项目运行和编译需要哪些外部库。
  • 构建配置:源代码目录、资源文件目录、插件及其配置(如编译器版本、打包方式)。
  • 构建生命周期:定义了构建过程的各个阶段(phase)。
  • 继承与聚合:支持多模块项目,允许子模块继承父模块的配置,实现配置复用。

一个最简单的pom.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.example</groupId> <artifactId>my-first-maven-project</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> </project>

2.3 仓库(Repository):Maven的“图书馆”

仓库是存放所有Maven构件(Jar包、插件等)的地方。分为三类:

  1. 本地仓库(Local Repository):在你个人电脑上的一个目录(默认是~/.m2/repository)。Maven会优先从这里查找依赖。如果找不到,才会去远程仓库下载,并缓存到本地。这避免了重复下载,极大地加快了构建速度。
  2. 中央仓库(Central Repository):由Maven社区维护的全球性仓库,包含了绝大多数开源Java构件。它是默认的远程仓库,无需特殊配置。但它的服务器在国外,在国内直接访问速度可能很慢甚至超时。
  3. 远程仓库(Remote Repository):其他公开或私有的仓库。最典型的就是阿里云Maven镜像仓库,它同步了中央仓库的内容,在国内访问速度极快。公司内部也通常会搭建私服(如Nexus、Artifactory),用于存放公司内部构件和代理外部仓库,既能加速构建,又能进行安全管控和审计。

实操心得:国内开发,第一件事就是把默认的中央仓库地址换成阿里云镜像。这能为你节省大量构建等待时间,避免因网络问题导致的构建失败。

2.4 生命周期(Lifecycle)与插件(Plugin):自动化的“流水线”

Maven的构建过程是基于生命周期的。一个生命周期由一系列有序的阶段(phase)组成。最常用的三个内置生命周期是:

  • clean:清理生命周期,用于清理上次构建生成的文件。核心阶段是clean
  • default(或build):默认生命周期,用于编译、测试、打包、部署。核心阶段包括:
    • compile- 编译主代码
    • test-compile- 编译测试代码
    • test- 运行单元测试
    • package- 打包(生成Jar/War等)
    • install- 将包安装到本地仓库
    • deploy- 将包部署到远程仓库
  • site:站点生命周期,用于生成项目报告和站点文档。

关键点在于:当你执行某个阶段时,Maven会自动执行该阶段之前的所有阶段。例如,执行mvn package,Maven会依次执行validate,compile,test,package

那么,谁来完成这些阶段的具体工作呢?答案是插件(Plugin)。每个阶段都绑定了一个或多个插件目标(goal)。例如,compile阶段绑定了maven-compiler-plugincompile目标。Maven本身只是一个框架,几乎所有实质性的工作都是由插件完成的。你可以配置插件来定制构建行为,比如指定Java编译版本。

3. 从零开始:Maven的安装与多环境配置

理解了核心概念,我们开始动手。安装Maven本身很简单,关键在于环境变量的配置和IDE的集成。

3.1 下载与安装

  1. 访问官网:前往 Apache Maven官网 。不要从不明来源下载,确保文件完整性。
  2. 选择版本:对于大多数新项目,建议选择最新的稳定版(如3.8.x或3.9.x)。除非项目有特殊要求,否则避免使用过旧的版本。下载Binary zip archive格式。
  3. 解压:将下载的ZIP包解压到一个没有中文和空格的目录。例如:
    • Windows:D:\dev-tools\apache-maven-3.8.8
    • Mac/Linux:/usr/local/apache-maven-3.8.8~/dev/apache-maven-3.8.8

3.2 配置环境变量

为了让系统在任何位置都能识别mvn命令,需要配置MAVEN_HOMEPATH

Windows系统:

  1. 右键“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
  2. 在“系统变量”区域,点击“新建”:
    • 变量名:MAVEN_HOME
    • 变量值:你的Maven解压路径,如D:\dev-tools\apache-maven-3.8.8
  3. 找到并编辑“系统变量”中的Path变量,点击“新建”,添加一行:%MAVEN_HOME%\bin

Mac/Linux系统:打开终端,编辑你的shell配置文件(如~/.zshrc~/.bash_profile)。

# 使用vim或你喜欢的编辑器 vim ~/.zshrc

在文件末尾添加:

export MAVEN_HOME=/usr/local/apache-maven-3.8.8 export PATH=$MAVEN_HOME/bin:$PATH

然后让配置生效:

source ~/.zshrc

验证安装: 打开新的命令行窗口(重要!),输入:

mvn -v

如果正确显示Maven版本、Java版本等信息,说明安装成功。

注意事项JAVA_HOME环境变量必须已正确配置,且指向JDK的安装根目录(不是bin目录)。Maven运行依赖于Java。一个常见的错误是JAVA_HOME指向了JRE而不是JDK。

3.3 关键配置:settings.xml详解

Maven的全局配置位于安装目录的conf/settings.xml。更常见的做法是复制该文件到你的本地仓库目录(~/.m2/)下进行用户级配置,这样不会影响其他用户。

这个文件是Maven的“大脑”,配置好了能极大提升体验。我们重点看几个部分:

1. 本地仓库路径(可选)默认本地仓库在~/.m2/repository。如果你想换到其他位置(比如D盘更大的空间),可以修改:

<settings> <localRepository>D:/maven-repository</localRepository> ... </settings>

路径中的斜杠/在Windows和Mac/Linux下都适用。

2. 镜像配置(强烈推荐)这是国内开发者最重要的配置。将中央仓库镜像到阿里云。

<settings> <mirrors> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> </mirrors> </settings>
  • <mirrorOf>*</mirrorOf>:表示匹配所有仓库请求,都转到这个镜像。对于初学者,这样配置最简单。
  • 注意:如果你的公司有私服,<mirrorOf>通常会被配置为central或更具体的值,以避免覆盖私服地址。具体需遵循公司规范。

3. 代理配置(按需)如果你在公司内网,需要通过代理服务器访问外网,则需要配置代理。

<settings> <proxies> <proxy> <id>my-proxy</id> <active>true</active> <protocol>http</protocol> <host>proxy.company.com</host> <port>8080</port> <!-- 如果代理需要认证 --> <username>your-username</username> <password>your-password</password> <!-- 哪些主机不走代理,localhost和公司内网通常排除 --> <nonProxyHosts>localhost|127.0.0.1|*.company.local</nonProxyHosts> </proxy> </proxies> </settings>

4. 配置多个镜像仓库(高级)有时,一个镜像可能不包含你需要的所有构件(比如某些较新的或较偏门的依赖)。你可以配置多个镜像,并为它们指定不同的<mirrorOf>标签。Maven会按顺序查找。但更常见的做法是在项目的pom.xml中直接添加额外的仓库地址。

3.4 IDE集成配置

IntelliJ IDEA:

  1. 打开File -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven
  2. Maven home path:选择你的Maven安装目录(或使用IDEA内置的Bundled Maven)。
  3. User settings file:指向你修改过的那个settings.xml(例如~/.m2/settings.xml)。这样IDEA就会使用你配置的镜像和本地仓库路径。
  4. Local repository:会自动根据settings.xml的配置更新。
  5. 点击ApplyOK

踩坑记录:很多人在IDEA中执行Maven命令失败,问题就出在这里——IDEA可能还在使用它自带的、未配置镜像的Maven和settings.xml。务必检查这两项配置。

VS Code:

  1. 安装扩展“Extension Pack for Java”或“Maven for Java”。
  2. 打开命令面板(Ctrl+Shift+P),输入“Maven: Update Maven Settings”,选择你的settings.xml文件路径。
  3. 你也可以在用户设置(settings.json)中直接配置:
    "maven.executable.path": "/usr/local/apache-maven-3.8.8/bin/mvn", "maven.settingsFile": "/Users/yourname/.m2/settings.xml", "java.configuration.maven.userSettings": "/Users/yourname/.m2/settings.xml"

Eclipse:Window -> Preferences -> Maven -> User Settings中,指定你的settings.xml文件位置。

4. 日常开发:Maven命令与POM实战

环境配好了,我们来真刀真枪地操作。Maven的强大,大部分体现在命令行和pom.xml的编写上。

4.1 核心Maven命令详解

在项目根目录(即包含pom.xml的目录)下打开命令行。

  • mvn clean:清理target目录,删除所有已编译的class文件和打包好的构件。在需要全新构建时使用。
  • mvn compile:编译项目的主源代码。编译后的class文件位于target/classes
  • mvn test-compile:编译项目的测试源代码。
  • mvn test:运行项目中所有的单元测试(使用JUnit等)。这是保证代码质量的关键步骤。
  • mvn package:编译、测试,并将代码打包成可发布的格式(Jar/War等)。包文件生成在target/目录下。
  • mvn install:执行package的所有步骤,并将生成的包安装到本地仓库。这样,本地其他Maven项目就可以直接引用这个包了。
  • mvn deploy:在install的基础上,将包部署到远程仓库(如公司的私服)。这通常用于发布版本。
  • mvn clean install:最常用的组合命令。先清理,再完整地执行到install阶段。这能确保你从一个干净的状态开始构建。
  • mvn clean package -DskipTests:清理并打包,但跳过测试阶段。-DskipTests是一个参数,在需要快速打包验证,或者测试暂时有问题时使用。
  • mvn dependency:tree神级命令。以树形结构显示项目的所有依赖(包括传递性依赖)。这是分析依赖冲突的必备工具。
  • mvn help:effective-pom:查看项目的有效POM。它会将父POM、超级POM(Maven默认的)以及所有激活的profile配置合并后显示出来,对于调试复杂的POM配置非常有用。

4.2 POM.xml编写实战:从简单到复杂

让我们从一个基础的单模块项目POM开始,逐步添加内容。

1. 基础项目信息与属性:

<?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.example</groupId> <artifactId>demo-application</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> <!-- 也可以是 war, pom 等 --> <!-- 项目名称和描述 --> <name>Demo Application</name> <description>A simple demo project for Maven tutorial</description> <!-- 属性定义,便于统一管理版本号等 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <java.version>11</java.version> <!-- 自定义属性,如依赖版本 --> <spring-boot.version>2.7.0</spring-boot.version> </properties> ... </project>
  • SNAPSHOT后缀表示这是一个快照版本,处于开发中,Maven会定期检查远程仓库是否有更新的快照。
  • <properties>中定义版本号等变量是最佳实践,方便统一升级。

2. 依赖管理(Dependencies):<dependencies>块内声明项目所需的所有外部库。

<dependencies> <!-- Spring Boot Web Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring-boot.version}</version> <!-- 使用属性中定义的版本 --> </dependency> <!-- Lombok:减少样板代码 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> <scope>provided</scope> <!-- 编译和测试时需要,但运行时不需要打包 --> </dependency> <!-- MySQL驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> <scope>runtime</scope> <!-- 仅在运行时需要,编译时不需要 --> </dependency> <!-- 单元测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>${spring-boot.version}</version> <scope>test</scope> <!-- 仅在测试时需要 --> </dependency> </dependencies>

依赖范围(Scope)非常重要:

  • compile:默认值。对编译、测试、运行都有效,会打包。
  • provided:编译和测试时需要,但运行时由容器(如Tomcat)或JDK提供。如Servlet API、Lombok。
  • runtime:编译时不需要,但测试和运行时需要,会打包。如数据库驱动。
  • test:仅用于测试,不会打包。

3. 构建配置(Build):<build>块用于配置插件,控制构建过程。

<build> <plugins> <!-- 指定编译器版本,覆盖 maven-compiler-plugin 默认设置 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> <!-- Spring Boot Maven Plugin:用于打包可执行Jar --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <executions> <execution> <goals> <goal>repackage</goal> <!-- 重新打包,使jar可执行 --> </goals> </execution> </executions> </plugin> </plugins> <!-- 资源文件过滤与配置 --> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <!-- 允许用属性替换资源文件中的占位符 --> <includes> <include>**/*.properties</include> <include>**/*.yml</include> </includes> </resource> </resources> </build>

4.3 多模块项目(Multi-Module)管理

当一个项目变得庞大时,拆分成多个模块是必然选择。Maven通过父子POM来管理多模块项目。

父POM(聚合POM)

  • 打包方式必须为<packaging>pom</packaging>
  • <modules>中列出所有子模块。
  • 通常在这里统一管理所有子模块的依赖版本(使用<dependencyManagement>)和插件。
<!-- parent-pom.xml --> <groupId>com.example</groupId> <artifactId>parent-project</artifactId> <version>1.0.0</version> <packaging>pom</packaging> <modules> <module>module-common</module> <module>module-service</module> <module>module-web</module> </modules> <!-- 依赖版本管理 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> <!-- 导入Spring Boot的依赖管理 --> </dependency> </dependencies> </dependencyManagement>

子模块POM

  • 通过<parent>元素指定父POM。
  • 子模块中声明依赖时,如果版本在父POM的<dependencyManagement>中已管理,则可以省略<version>
<!-- module-service/pom.xml --> <parent> <groupId>com.example</groupId> <artifactId>parent-project</artifactId> <version>1.0.0</version> </parent> <artifactId>module-service</artifactId> <dependencies> <!-- 无需指定版本,版本由父POM统一管理 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> </dependencies>

在父项目根目录执行mvn clean install,Maven会根据模块依赖关系自动按顺序构建所有子模块。

5. 进阶技巧与疑难问题排查实录

掌握了基础,我们来看看那些让新手头疼的“坑”和高级用法。

5.1 依赖冲突与解决之道

依赖冲突是Maven中最常见的问题。当两个不同的依赖(或传递性依赖)引入了同一个Jar包的不同版本时,Maven需要决定使用哪一个。它的仲裁规则是“最短路径优先”和“先声明优先”。

使用mvn dependency:tree分析依赖树: 这是解决问题的第一步。在项目根目录运行此命令,你会看到类似下面的输出:

[INFO] com.example:demo:jar:1.0 [INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.7.0:compile [INFO] | +- org.springframework.boot:spring-boot-starter:jar:2.7.0:compile [INFO] | | \- ... [INFO] | +- org.springframework.boot:spring-boot-starter-json:jar:2.7.0:compile [INFO] | | \- com.fasterxml.jackson.core:jackson-databind:jar:2.13.3:compile [INFO] | | \- com.fasterxml.jackson.core:jackson-core:jar:2.13.3:compile [INFO] +- com.alibaba:fastjson:jar:1.2.83:compile

如果发现某个包出现了多个版本,就产生了冲突。

解决方案:

  1. 排除(Exclusion):在引入依赖时,排除掉不需要的传递性依赖。
    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.7.0</version> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</groupId> <!-- 排除默认日志 --> </exclusion> </exclusions> </dependency>
  2. 依赖管理(Dependency Management):在父POM或当前POM的<dependencyManagement>中,强制指定某个依赖的版本。所有引用该依赖的地方都会使用此版本。
    <dependencyManagement> <dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.3</version> <!-- 强制指定版本 --> </dependency> </dependencies> </dependencyManagement>
  3. 查看最终依赖:使用mvn dependency:resolve可以列出所有解析后的依赖及其最终选择的版本。

5.2 Profile:多环境配置切换

项目通常需要区分开发、测试、生产等不同环境,它们的配置(如数据库地址、日志级别)可能不同。Maven的Profile机制可以解决这个问题。

pom.xml中定义Profile:

<profiles> <profile> <id>dev</id> <properties> <env>development</env> <db.url>jdbc:mysql://localhost:3306/dev_db</db.url> </properties> <!-- 可以激活特定的插件或资源过滤 --> <activation> <activeByDefault>true</activeByDefault> <!-- 默认激活 --> </activation> </profile> <profile> <id>prod</id> <properties> <env>production</env> <db.url>jdbc:mysql://prod-server:3306/prod_db</db.url> </properties> </profile> </profiles>

src/main/resources目录下的配置文件中使用属性占位符(如application.properties):

spring.datasource.url=${db.url} application.env=${env}

激活Profile:

  • 命令行激活:mvn clean install -P prod(激活prodprofile)
  • 通过settings.xml中的<activeProfiles>激活。
  • 通过环境条件自动激活(如检测操作系统)。

5.3 常见问题排查实录

问题1:Could not transfer artifact ... from/to central ...Received fatal alert: protocol_version

  • 原因:网络问题无法连接到仓库,或者使用的Java版本与仓库服务器要求的TLS协议不匹配(常见于JDK 1.8早期版本访问HTTPS仓库)。
  • 解决
    1. 检查settings.xml中的镜像配置是否正确(阿里云镜像)。
    2. 检查网络连接和代理设置。
    3. 如果是TLS协议问题,升级JDK到1.8u101之后版本,或在MAVEN_OPTS环境变量中添加-Dhttps.protocols=TLSv1.2

问题2:Non-resolvable parent POM ...

  • 原因:无法解析父POM。可能是父POM的版本在仓库中不存在,或者没有将父POMinstall到本地仓库/deploy到远程仓库。
  • 解决
    1. 检查父POM的坐标是否正确。
    2. 如果父项目在本地,先在父项目目录下执行mvn install
    3. 如果是多模块项目,确保在根目录执行命令。

问题3:No compiler is provided in this environment.

  • 原因:Maven找不到Java编译器。JAVA_HOME环境变量可能指向了JRE而不是JDK。
  • 解决:确保JAVA_HOME指向的是JDK的安装根目录(包含bin,jre,lib等文件夹的目录)。

问题4:依赖下载到一半失败,本地仓库中有.lastUpdated文件

  • 原因:网络中断导致依赖下载不完整。
  • 解决:删除本地仓库中对应依赖的目录,或者运行mvn dependency:purge-local-repository清理并重新下载。也可以直接搜索并删除所有.lastUpdated文件。

问题5:IDEA中Maven项目依赖报红,但命令行构建正常

  • 原因:IDEA的索引和缓存问题。
  • 解决
    1. 检查IDEA的Maven配置(Settings -> Maven)是否正确指向了你的settings.xml
    2. 尝试File -> Invalidate Caches and Restart
    3. 在Maven工具窗口(右侧边栏)点击“Reimport All Maven Projects”(刷新按钮)。
    4. 或者,在命令行进入项目目录,执行mvn idea:idea(旧版)或重新生成IDE文件。

5.4 使用阿里云仓库网页版进行搜索

当你不知道某个依赖的准确坐标时,可以直接访问阿里云Maven仓库的网页版进行搜索。

  1. 打开浏览器,访问 阿里云Maven仓库 。
  2. 在搜索框中输入关键词,如“spring-boot-starter-web”。
  3. 从搜索结果中找到正确的构件,页面上会直接显示它的groupIdartifactIdversion,你可以直接复制到pom.xml中。

这比在IDE中盲目猜测效率高得多,尤其是在寻找一些不太常见的库时。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 12:01:19

AI Agent开发实战:从概念到落地的四层架构与避坑指南

你有没有过这样的经历&#xff1a;想学一个新技术&#xff0c;打开B站&#xff0c;搜到一堆标题写着“最全”“最细”“七天速成”的教程&#xff0c;点进去发现要么是东拼西凑的PPT录屏&#xff0c;要么是只讲皮毛不讲原理的“Hello World”&#xff0c;要么就是直接甩给你一堆…

作者头像 李华
网站建设 2026/8/24 12:01:15

Fladder:简单免费的全平台 Jellyfin 前端

Fladder&#xff1a;简单免费的全平台 Jellyfin 前端 【免费下载链接】Fladder Fladder - A cross-platform Jellyfin Frontend built on top of Flutter. 项目地址: https://gitcode.com/gh_mirrors/fl/Fladder 自建好 Jellyfin&#xff08;一个开源的媒体服务器&#…

作者头像 李华
网站建设 2026/8/24 12:00:31

OpenRouter平台Muse Spark 1.2低价调用指南:从API接入到生产实践

1. 先搞清楚 Muse Spark 1.2 在 OpenRouter 上到底意味着什么如果你最近在找价格更亲民、能力又不错的文本生成模型&#xff0c;那 OpenRouter 上线的 Muse Spark 1.2 低价档位&#xff0c;绝对值得你花几分钟了解一下。这不是一个全新的模型发布&#xff0c;而是服务商 OpenRo…

作者头像 李华
网站建设 2026/8/24 11:55:11

DeepSeek视觉API配置与使用指南:解决V4-Flash-Vision调用常见问题

如果你最近在尝试调用DeepSeek的API&#xff0c;可能会发现一个令人困惑的现象&#xff1a;明明官方文档写着支持视觉功能&#xff0c;但实际调用时却总是返回错误。这不是你的代码有问题&#xff0c;而是很多人忽略了一个关键细节——DeepSeek的视觉API需要特定的模型版本才能…

作者头像 李华
网站建设 2026/8/24 11:51:01

数学建模论文写作全攻略:从结构到细节的实战指南

1. 项目概述&#xff1a;从“解题”到“成文”的跨越很多同学在数学建模竞赛中&#xff0c;常常陷入一个误区&#xff1a;认为只要模型建得好、算法跑得通&#xff0c;论文自然水到渠成。我见过太多队伍&#xff0c;通宵达旦把模型和代码调得近乎完美&#xff0c;却在最后一天手…

作者头像 李华
网站建设 2026/8/24 11:48:59

WSABuilds:10 分钟在电脑上装好安卓子系统,一份 WSA 完整教程

WSABuilds&#xff1a;10 分钟在电脑上装好安卓子系统&#xff0c;一份 WSA 完整教程 【免费下载链接】WSABuilds Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or …

作者头像 李华