You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何同时运行两个Maven命令?解决JDWP端口8000占用问题

解决Maven调试端口冲突(JDWP Transport address is in use)问题

你遇到的核心问题是Maven调试模式默认占用8000端口——哪怕你只是执行mvn build这类非启动命令,如果项目配置了自动触发调试(比如通过插件或全局环境变量),第二个Maven进程就会因为端口被占用而失败。下面给你几种实用的解决方案:

1. 临时修改单个Maven命令的调试端口

如果只是临时需要运行第二个Maven任务,直接在命令行指定端口参数即可,不用改全局配置:

  • 若你是运行测试(依赖Surefire插件):
    mvn clean test -Dmaven.surefire.debug="-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001"
    
  • 若你是用Spring Boot的spring-boot:run启动服务:
    mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001"
    
    把address=8001改成任意未被占用的端口就行。

2. 全局修改MAVEN_OPTS环境变量

你之前尝试设置MAVEN_OPTS没成功,大概率是参数格式不对或者配置未生效。正确的设置方式:

  • Mac/Linux终端:

    export MAVEN_OPTS="-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001"
    

    执行完后用echo $MAVEN_OPTS确认参数是否正确。如果想永久生效,把这行加到你的~/.bashrc、~/.zshrc或对应shell配置文件中,重启终端即可。

  • Windows命令提示符:

    set MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001
    

    永久生效需右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,新增系统变量MAVEN_OPTS并填入上述值。

    注意:如果是在IDE(如IntelliJ IDEA、Eclipse)里运行Maven命令,需要在IDE的Maven配置中单独设置MAVEN_OPTS,IDE配置会覆盖系统环境变量。

3. 在pom.xml中固定调试端口

如果不想每次手动加参数,可以直接在项目pom.xml里配置插件的调试端口,一劳永逸:

针对Maven Surefire插件(测试场景)

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.2.5</version> <!-- 使用最新稳定版 -->
            <configuration>
                <forkCount>1</forkCount>
                <reuseForks>true</reuseForks>
                <argLine>
                    -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001
                </argLine>
            </configuration>
        </plugin>
    </plugins>
</build>

针对Spring Boot Maven插件(服务启动场景)

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <jvmArguments>
                    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001
                </jvmArguments>
            </configuration>
        </plugin>
    </plugins>
</build>

4. 检查并释放8000端口(可选)

如果你确实想继续用8000端口,可以先杀掉占用它的进程:

  • Mac/Linux:
    lsof -i :8000  # 找到进程PID
    kill -9 <PID>  # 替换为实际的PID
    
  • Windows:
    netstat -ano | findstr :8000  # 找到进程PID
    taskkill /F /PID <PID>  # 强制终止进程
    

内容的提问来源于stack exchange,提问作者Francisl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:42:24