如何使用mvn wildfly:run命令同时部署两个独立Maven项目
问题原因
你之前的命令无法同时部署两个项目有两个核心原因:
- 重复使用
-pl参数的写法错误,Maven只会识别最后一个-pl指定的模块,所以只会处理单个项目 - 即使你改成正确的多模块指定写法
-pl project-rest-api,web-frontend,wildfly:run目标的默认行为是在当前模块执行时启动全新Wildfly实例并阻塞进程部署当前模块,前一个模块执行时就会占住进程,后一个模块根本不会运行,自然只能部署一个项目
解决方案
以下两种方案都不需要调整两个子模块的依赖关系:
方案1:临时部署无需改POM(两步执行)
思路是先启动空的Wildfly后台实例,再分别部署两个项目到运行中的实例:
- 先在父项目根目录执行命令启动后台Wildfly实例:
mvn wildfly:start -f pom.xml - 再执行命令同时构建并部署两个模块到已启动的Wildfly:
mvn clean wildfly:deploy -pl project-rest-api,web-frontend - 需要关闭Wildfly时执行:
mvn wildfly:shutdown
方案2:单次命令执行(修改父POM配置,适合长期使用)
在父POM中统一配置Wildfly插件的部署项,之后单次命令即可完成启动+双部署:
- 在父POM的
build/plugins节点下添加如下插件配置,把配置中的groupId、版本号替换为你项目的实际值:
<plugin> <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-maven-plugin</artifactId> <version>2.0.1.Final</version> <configuration> <deployments> <deployment> <groupId>替换为你的项目groupId</groupId> <artifactId>project-rest-api</artifactId> <version>替换为你的项目版本号</version> <type>war</type> </deployment> <deployment> <groupId>替换为你的项目groupId</groupId> <artifactId>web-frontend</artifactId> <version>替换为你的项目版本号</version> <type>war</type> </deployment> </deployments> </configuration> <executions> <execution> <phase>install</phase> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin>
- 在两个子模块的Wildfly插件配置中添加
<skip>true</skip>,避免子模块重复执行插件逻辑。 - 之后直接在父项目根目录执行以下命令即可完成全构建、启动Wildfly、双项目部署:
mvn clean install
内容的提问来源于stack exchange,提问作者ScottFree
相关产品推荐
相关产品推荐

