Maven 运行 Spring Boot:mvn spring-boot:run 常见错误与多模块 ${revision} 问题

基本命令

在 Spring Boot 项目根目录执行:

mvn spring-boot:run

常用选项:

# 跳过测试(开发时推荐)
mvn spring-boot:run -DskipTests

# 指定激活 profile
mvn spring-boot:run -Dspring-boot.run.profiles=dev

# 组合使用
mvn spring-boot:run -DskipTests -Dspring-boot.run.profiles=dev

启动成功标志:

Started XxxApplication in 3.421 seconds (process running for 4.012)

打包后运行(生产推荐)

mvn clean package -DskipTests
java -jar target/xxx-0.0.1-SNAPSHOT.jar

打包出的 fat jar 包含所有依赖,可在任意安装了 JRE 的机器上运行。

错误一:mvn 不是内部或外部命令

Maven 未加入 PATH,测试:

mvn -v

如果报错,检查 MAVEN_HOME 和 PATH 配置,重开终端或重启后重试。

错误二:No plugin found for prefix ‘spring-boot’

pom.xml 缺少 Spring Boot Maven 插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

如果项目继承了 spring-boot-starter-parent,插件版本已由父 POM 管理,不需要指定版本号。

错误三:多模块项目 ${revision} 无法解析

多模块项目使用 ${revision} 占位符统一版本号时:

[ERROR] Could not find artifact net.xxx:parent:pom:${revision}

根因是运行命令的子模块还没安装父 POM 到本地仓库。解决方法:

从根目录先执行 install:

# 进入多模块根目录(有最顶层 pom.xml 的目录)
cd /path/to/root

# 安装所有模块到本地仓库
mvn clean install -DskipTests

安装后再进入子模块运行:

cd maku-server
mvn spring-boot:run -DskipTests

或直接在根目录指定子模块:

mvn spring-boot:run -pl maku-server -am -DskipTests

-pl 指定目标模块,-am 同时构建依赖的模块。

端口占用

# Windows
netstat -ano | findstr 8080
taskkill /PID <PID> /F

# Linux
lsof -i :8080
kill -9 <PID>

或在 application.yml 修改端口:

server:
  port: 8081