如何为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
注意事项
- 两种方案各有优劣:动态属性方式更灵活(可任意指定目录路径),Profile方式更规范(仅允许切换预定义目录),可根据需求选择。
- 每次切换目录执行命令时,建议加上
clean目标,避免前一次构建的编译残留影响结果。 - 如果两个目录下的SpringBoot启动类全类名不一致,执行
spring-boot:run时需通过-Dspring-boot.run.main-class=xxx.xxx.Application明确指定主类。
内容的提问来源于stack exchange,提问作者Arun
相关产品推荐
相关产品推荐

