为何Anypoint Studio部署到CloudHub时pom.xml自动更新且部署失败?
Anypoint Studio 7.16部署CloudHub失败:Maven插件配置被篡改问题解决
问题现象
- 测试项目pom.xml里原本配置的
mule-maven-plugin的classifier是mule-application - 从Anypoint Studio 7.16直接部署到CloudHub时,这个
classifier会被自动改成---- select project type ---- - 部署直接失败,报错说期望资产类型是
rest-api,实际设置的是app - 手动把
classifier改成rest-api后,部署时会先被改回mule-application,接着又变回那个占位符,还是失败 - 之前用Studio 7.15的时候同一项目完全没问题,升级后才出的问题
初始pom.xml插件配置
<plugin> <groupId>org.mule.tools.maven</groupId> <artifactId>mule-maven-plugin</artifactId> <version>${mule.maven.plugin.version}</version> <extensions>true</extensions> <configuration> <classifier>mule-application</classifier> </configuration> </plugin>
部署时被修改后的配置
<plugin> <groupId>org.mule.tools.maven</groupId> <artifactId>mule-maven-plugin</artifactId> <version>${mule.maven.plugin.version}</version> <extensions>true</extensions> <configuration> <classifier>---- select project type ----</classifier> </configuration> </plugin>
具体报错信息
Publication status: error [INFO] ------------------------------------------------------------ [INFO] Steps: [INFO] - Description: Publishing asset [INFO] - Status: error [INFO] - Errors: [The asset is invalid, Error while trying to set type: app. Expected type is: rest-api.] [INFO] ......................................... [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 02:33 min [INFO] Finished at: 2024-01-08T14:11:31+05:30 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.mule.tools.maven:exchange-mule-maven-plugin:0.0.17:exchange-deploy (default-exchange-deploy) on project super-biodata-sapi: Exchange publication failed: Publication ended with errors: [The asset is invalid, Error while trying to set type: app. Expected type is: rest-api.] -> [Help 1]
环境信息
- Anypoint Studio:7.16.0
- Maven:3.8.8
- Mule Runtime:4.4.0
- Mule Maven Plugin:3.8.0/4.0.0(两个版本都试过)
- Java:OpenJDK 11.0.9
原因分析
- Studio 7.16项目类型识别逻辑变更:新版本对项目类型的自动检测和同步逻辑做了调整,如果项目包含RAML/OAS这类API规范文件,会被识别为REST API类型,但pom.xml里配置的是
mule-application,Studio就会强制修改classifier为占位符,导致部署时类型不匹配。 - Exchange部署插件校验严格化:
exchange-mule-maven-plugin新版本对资产类型的校验更严格,若项目实际是REST API资产,则不允许用app(对应mule-application)类型部署。 - 项目元数据冲突:项目中同时存在Mule应用和REST API的元数据标识(比如
.mule目录下的配置),导致Studio和Maven插件对项目类型的识别不一致。
解决步骤
1. 确认项目的资产类型
检查项目是否包含RAML/OAS文件,或是在Anypoint Platform中被标记为REST API资产。如果是REST API项目,正确的classifier应为rest-api。
2. 锁定pom.xml的classifier配置
直接在pom.xml的插件配置中写死rest-api(REST API项目适用),同时检查项目的.project文件,找到<natures>节点,确保只保留对应项目类型的nature——比如REST API项目留com.mulesoft.studio.restapi.nature,删除多余的Mule应用nature。
3. 关闭Studio的自动Maven配置同步
打开Studio的Window > Preferences > Anypoint Studio > Maven,取消勾选Automatically synchronize Maven configuration,重启Studio后重新部署。
4. 清理项目元数据后重新构建
- 执行Maven清理命令:
mvn clean install -DskipTests
- 删除项目根目录下的
.mule和target文件夹 - 在Studio中右键项目,选择
Maven > Update Project,勾选Force Update of Snapshots/Releases
5. 检查Exchange部署插件版本
确保exchange-mule-maven-plugin的版本与Mule Maven Plugin兼容,建议使用与Studio 7.16匹配的版本(比如0.0.20及以上),避免版本不匹配导致的校验问题。
内容的提问来源于stack exchange,提问作者Lord Aizen
相关产品推荐
相关产品推荐

