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

如何为SpringBoot项目指定不同源码目录执行Maven命令?

方案完全可行,两种实现方式供你选择

你可以通过以下两种方式,在Maven命令中切换使用src或solution作为源码目录执行构建和运行命令:


方式一:通过Maven动态属性指定目录

在pom.xml中定义一个默认指向src的属性,然后将构建配置中的源码、资源路径全部绑定到该属性,执行命令时通过参数覆盖属性值即可切换目录。

1. 修改pom.xml配置

<properties>
    <!-- 默认使用src目录 -->
    <source.root>src</source.root>
</properties>

<build>
    <!-- 主源码目录 -->
    <sourceDirectory>${project.basedir}/${source.root}/main/java</sourceDirectory>
    <!-- 测试源码目录 -->
    <testSourceDirectory>${project.basedir}/${source.root}/test/java</testSourceDirectory>
    
    <!-- 主资源文件目录 -->
    <resources>
        <resource>
            <directory>${project.basedir}/${source.root}/main/resources</directory>
        </resource>
    </resources>
    <!-- 测试资源文件目录 -->
    <testResources>
        <testResource>
            <directory>${project.basedir}/${source.root}/test/resources</directory>
        </testResource>
    </testResources>

    <!-- 保留原有的plugins配置(比如spring-boot-maven-plugin) -->
</build>

2. 执行命令

  • 使用src目录(默认):
    mvn clean install
    mvn spring-boot:run
    
  • 切换到solution目录:
    mvn clean install -Dsource.root=solution
    mvn spring-boot:run -Dsource.root=solution
    

方式二:通过Maven Profiles配置固定目录

在pom.xml中定义两个Profile,分别对应src和solution目录,执行命令时通过-P参数指定激活对应的Profile。

1. 修改pom.xml配置

<profiles>
    <!-- 默认激活src目录的Profile -->
    <profile>
        <id>use-src</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <build>
            <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
            <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
            <resources>
                <resource>
                    <directory>${project.basedir}/src/main/resources</directory>
                </resource>
            </resources>
            <testResources>
                <testResource>
                    <directory>${project.basedir}/src/test/resources</directory>
                </testResource>
            </testResources>
        </build>
    </profile>

    <!-- solution目录的Profile -->
    <profile>
        <id>use-solution</id>
        <build>
            <sourceDirectory>${project.basedir}/solution/main/java</sourceDirectory>
            <testSourceDirectory>${project.basedir}/solution/test/java</testSourceDirectory>
            <resources>
                <resource>
                    <directory>${project.basedir}/solution/main/resources</directory>
                </resource>
            </resources>
            <testResources>
                <testResource>
                    <directory>${project.basedir}/solution/test/resources</directory>
                </testResource>
            </testResources>
        </build>
    </profile>
</profiles>

2. 执行命令

  • 使用src目录(默认):
    mvn clean install
    mvn spring-boot:run
    
  • 切换到solution目录:
    mvn clean install -Puse-solution
    mvn spring-boot:run -Puse-solution
    

注意事项

  1. 两种方案各有优劣:动态属性方式更灵活(可任意指定目录路径),Profile方式更规范(仅允许切换预定义目录),可根据需求选择。
  2. 每次切换目录执行命令时,建议加上clean目标,避免前一次构建的编译残留影响结果。
  3. 如果两个目录下的SpringBoot启动类全类名不一致,执行spring-boot:run时需通过-Dspring-boot.run.main-class=xxx.xxx.Application明确指定主类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:45:48