如何构建前后端分层结构的Maven多模块项目并生成可运行程序
配置预校验
先确认各层POM的核心配置符合多模块规则,避免构建时报错:
- 根项目
MyProject的pom.xml:packaging设置为pom,modules节点明确引入<module>Frontend</module>和<module>Backend</module>,建议在根POM的dependencyManagement中统一声明整个项目通用的依赖版本(如基础工具包、框架版本),减少子模块重复配置。 Frontend、Backend层的pom.xml:packaging同样为pom,parent节点指向根项目MyProject的坐标,modules节点分别引入各自的子业务模块(如Frontend引入Window、Backend引入Database)。你计划在Frontend的dependencyManagement中声明后端模块依赖的方案是可行的,注意填写后端模块的完整groupId、artifactId,版本用${project.version}统一管理即可,子模块引用时无需再写版本号。- 业务子模块(
Window、Database等):packaging设置为jar,parent节点指向对应的上层父模块(Window的parent为Frontend、Database的parent为Backend);如果Window需要依赖Database,直接在Window的dependencies中填写Database的groupId和artifactId即可,无需重复声明版本。
构建操作步骤
所有命令默认在MyProject根目录执行,Maven会自动识别模块依赖关系,按正确顺序构建,不会出现依赖找不到的问题:
- 仅验证代码编译、单元测试是否正常,不生成本地安装包:
mvn clean verify - 将所有模块的包安装到本地Maven仓库,方便本地开发调用:
# 跳过单元测试可加 -DskipTests 参数 mvn clean install - 直接打包出可运行程序:
你的启动类在Window模块,执行以下命令即可只构建Window及其所有依赖的模块,最终输出可执行jar:
参数说明:mvn clean package -pl Window -am-pl:指定需要最终构建的目标模块,填模块的artifactId即可-am:自动构建目标模块依赖的所有上游模块,无需手动逐个构建
打包完成后,可执行jar会生成在Window/target目录下。
可运行包配置注意事项
如果你的项目是SpringBoot项目,需要在Window模块的pom.xml中额外配置spring-boot-maven-plugin,否则打出来的jar缺少主类信息无法直接运行,配置示例如下:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <!-- 替换为你自己的启动类全路径 --> <mainClass>com.yourpackage.Main</mainClass> </configuration> </plugin> </plugins> </build>
打包完成后,执行java -jar 生成的jar包名称.jar即可启动程序。
内容的提问来源于stack exchange,提问作者thorald_
相关产品推荐
相关产品推荐

