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

如何批量部署Maven项目中所有-api结尾的子模块?

批量部署所有-api子模块的可行方案

方案1:修正Maven通配符写法直接匹配

Maven的-pl参数支持Ant风格通配符,你之前的写法有误,改成下面的命令就能直接匹配所有一级目录下的*-api子模块:

mvn -Dmaven.test.skip=true clean deploy -pl */*-api -P test

如果有更深层级的-api模块,把通配符改成**/*-api即可,不过要注意别误匹配到非目标模块。

方案2:用Maven Profile统一管理

在项目根pom.xml里加一个专属Profile,把所有-api模块列进去,后续执行命令更省心:

  1. 编辑根pom.xml,在<profiles>节点下添加:
<profile>
  <id>deploy-api</id>
  <modules>
    <module>ProjectA/SubmoduleA-api</module>
    <module>ProjectB/SubmoduleB-api</module>
    <!-- 把所有-api模块都加在这里 -->
  </modules>
</profile>
  1. 之后执行命令:
mvn -Dmaven.test.skip=true clean deploy -P deploy-api,test

这个方案适合模块结构稳定的场景,一次配置终身复用。

方案3:Shell脚本自动收集模块(Linux/macOS)

不想改pom的话,用shell命令自动找出所有-api模块再传给Maven:

mvn -Dmaven.test.skip=true clean deploy -pl $(find . -name "*-api" -type d | grep -v target | tr '\n' ',') -P test

命令里的find会找出所有*-api目录,grep -v target排除构建产生的target目录,最后把换行转成逗号符合Maven的参数格式。

方案4:PowerShell脚本(Windows)

Windows环境下用PowerShell实现自动收集:

$modules = (Get-ChildItem -Directory -Filter *-api | Select-Object -ExpandProperty FullName | ForEach-Object { $_ -replace "^$pwd\\", "" }) -join ","
mvn -Dmaven.test.skip=true clean deploy -pl $modules -P test

脚本会遍历当前目录下的*-api子目录,转成相对路径后拼接成逗号分隔的字符串,传给Maven的-pl参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:27:20