Mule 3项目mvn clean install失败:依赖解析错误求助
问题
维护基于Mule 3的API项目时,执行mvn clean install构建失败,报错信息如下:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency- plugin:2.10:unpack (unpack) on project xyz: Unable to resolve artifact.: Could not transfer artifact ORGID:xyz:zip:fat-raml:1.0.2 from/to springio (http://repo.spring.io/libs-release): Failed to transfer file: http://repo.spring.io/libs-release/ORGID/xyz/1.0.2/xyz-1.0.2-fat-raml.zip. Return code is: 308 , ReasonPhrase:Permanent Redirect. [ERROR] ORGID:xyz:zip:1.0.2 [ERROR] [ERROR] from the specified remote repositories: [ERROR] MuleRepositoryEE (https://repository.mulesoft.org/nexus- ee/content/repositories/releases-ee/, releases=true, snapshots=false), [ERROR] MuleRepository (https://repository.mulesoft.org/nexus/content/repositories/releases/, releases=true, snapshots=false), [ERROR] AnypointExchangeRepository (https://maven.anypoint.mulesoft.com/api/v2/organizations/ORGID/maven, releases=true, snapshots=true), [ERROR] springio (http://repo.spring.io/libs-release, releases=true, snapshots=true), [ERROR] Central (http://repo1.maven.org/maven2/, releases=true, snapshots=true), [ERROR] mulesoft-releases (http://repository.mulesoft.org/releases/, releases=true, snapshots=true), [ERROR] mule-ee-releases (https://repository- master.mulesoft.org/nexus/content/repositories/releases-ee/, releases=true, snapshots=true), [ERROR] central (https://repo.maven.apache.org/maven2, releases=true, snapshots=false) [ERROR] -> [Help 1]
相关maven-dependency-plugin配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>unpack</id> <phase>generate-sources</phase> <goals> <goal>unpack</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>ORGID</groupId> <artifactId>xyz</artifactId> <version>1.0.2</version> <type>zip</type> <classifier>fat-raml</classifier> <overWrite>true</overWrite> <outputDirectory>src/main/api/</outputDirectory> <includes>**/*</includes> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin>
POM中的仓库配置:
<repositories> <repository> <id>springio</id> <name>springio</name> <url>http://repo.spring.io/libs-release</url> <layout>default</layout> </repository> <repository> <id>Central</id> <name>Central</name> <url>http://repo1.maven.org/maven2/</url> <layout>default</layout> </repository> <repository> <id>mulesoft-releases</id> <name>MuleSoft Releases Repository</name> <url>http://repository.mulesoft.org/releases/</url> <layout>default</layout> </repository> <repository> <id>AnypointExchangeRepository</id> <name>AnypointExchangeRepository</name> <url>https://maven.anypoint.mulesoft.com/api/v2/organizations/ORGID/maven</url> <layout>default</layout> </repository> <repository> <id>mule-ee-releases</id> <name>MuleEE Releases Repository</name> <url>https://repository-master.mulesoft.org/nexus/content/repositories/releases-ee/</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>mulesoft-release</id> <name>mulesoft release repository</name> <layout>default</layout> <url>http://repository.mulesoft.org/releases/</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> <distributionManagement> <repository> <id>AnypointExchangeRepository</id> <name>AnypointExchangeRepository</name> <url>https://maven.anypoint.mulesoft.com/api/v1/organizations/ORGID/maven</url> <layout>default</layout> </repository> </distributionManagement>
疑问:ORGID:xyz:zip:fat-raml:1.0.2应该从AnypointExchangeRepository获取,为什么Maven会尝试从Spring仓库查找?是否需要调整仓库顺序?
分析与解决
为什么会从Spring仓库查找
Maven会按照仓库在POM(及settings.xml)中的声明顺序依次查找构件。当前AnypointExchangeRepository在仓库列表中位置靠后,Maven先检查了springio仓库,自然会尝试从该仓库下载构件——即使这个构件根本不属于Spring的仓库范围。另外报错中的308是永久重定向,说明springio仓库的HTTP地址已失效,这是触发构建失败的直接原因,但不是构件找不到的核心问题。
解决方案
- 调整仓库顺序:将AnypointExchangeRepository移到
<repositories>的最前面,让Maven优先检查这个对应组织的私有仓库,避免无效的仓库查询。修改后的仓库配置片段:
<repositories> <repository> <id>AnypointExchangeRepository</id> <name>AnypointExchangeRepository</name> <url>https://maven.anypoint.mulesoft.com/api/v2/organizations/ORGID/maven</url> <layout>default</layout> </repository> <repository> <id>springio</id> <name>springio</name> <url>https://repo.spring.io/libs-release</url> <layout>default</layout> </repository> <repository> <id>Central</id> <name>Central</name> <url>https://repo1.maven.org/maven2/</url> <layout>default</layout> </repository> <repository> <id>mulesoft-releases</id> <name>MuleSoft Releases Repository</name> <url>https://repository.mulesoft.org/releases/</url> <layout>default</layout> </repository> <repository> <id>mule-ee-releases</id> <name>MuleEE Releases Repository</name> <url>https://repository-master.mulesoft.org/nexus/content/repositories/releases-ee/</url> </repository> </repositories>
修复仓库URL的重定向问题:将springio、Central、mulesoft-releases的HTTP地址改为HTTPS,彻底解决308永久重定向错误。
验证仓库权限:确认Maven的settings.xml中已配置AnypointExchangeRepository的正确认证信息,避免因权限不足导致构件无法下载。
清理本地缓存:执行
mvn clean install -U,强制更新构件信息,清除本地仓库的无效缓存。
内容的提问来源于stack exchange,提问作者GettingStarted With123
相关产品推荐
相关产品推荐

