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

Spring Boot Maven Plugin启动多应用问题:如何仅启动指定应用

解决方案:仅启动默认Web应用的几种方法

1. 精准配置插件并隔离组件扫描

首先得确保你的spring-boot-maven-plugin只绑定Web应用的主类,同时调整Web应用的组件扫描范围,避免误触发命令行应用的启动逻辑:

步骤1:配置Maven插件

在pom.xml里明确指定Web应用的主类,让插件只启动这个入口:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 指定Web应用的主类 -->
                <mainClass>com.sps.BackendApplication</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

步骤2:调整Web应用的组件扫描范围

修改BackendApplication的@SpringBootApplication注解,限定扫描的包路径,把命令行应用的代码隔离开:

@SpringBootApplication(scanBasePackages = "com.sps.backend")
public class BackendApplication {
    public static void main(String[] args) {
        SpringApplication.run(BackendApplication.class, args);
    }
}

把MigrationApplication放在独立的包(比如com.sps.migration)下,这样Web应用启动时就不会扫描到它,自然不会触发它的启动流程。

2. 使用Maven Profile区分两个应用

如果需要保留两个应用的启动能力,但默认只启动Web应用,可以用Maven Profile来隔离配置:

在pom.xml中添加Profile配置

<profiles>
    <!-- 默认激活的Web应用Profile -->
    <profile>
        <id>web-app</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <mainClass>com.sps.BackendApplication</mainClass>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

    <!-- 命令行应用的Profile -->
    <profile>
        <id>migration-app</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <mainClass>com.sps.MigrationApplication</mainClass>
                        <!-- 指定使用PropertiesLauncher -->
                        <launcherClass>org.springframework.boot.loader.PropertiesLauncher</launcherClass>
                        <layout>ZIP</layout>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

这样执行mvn spring-boot:run时,默认会激活web-appProfile,只启动BackendApplication;如果需要启动命令行应用,只需执行mvn spring-boot:run -P migration-app。

3. 开发阶段直接运行Web应用主类

如果你用IDE(比如IntelliJ IDEA、Eclipse),可以直接找到BackendApplication类,右键选择"Run"或"Debug",这样只会启动这个主类,完全不会涉及命令行应用的启动逻辑,这也是开发阶段最快捷的方式。

关键注意点

  • 别让MigrationApplication的@SpringBootApplication被BackendApplication的组件扫描覆盖,否则可能会加载额外配置,但不会启动另一个应用上下文(除非你手动调用了SpringApplication.run(MigrationApplication.class, args))。
  • 如果之前的pom.xml里有多个spring-boot-maven-plugin实例,建议删除多余的,避免配置冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:12:12