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

Maven无法解析AWS-CDK依赖(Java):software.constructs版本范围问题

解决AWS CDK Maven项目中software.constructs依赖范围解析失败问题

我在构建基于AWS CDK software.amazon.awscdk包的Maven多模块项目时,持续触发DependencyResolutionException错误,具体报错如下:

[ERROR] Failed to execute goal on project github-api-infrastructure: Could not resolve dependencies for project pixee:github-api-infrastructure:jar:dev: Failed to collect dependencies at software.amazon.awscdk:aws-cdk-lib:jar:2.17.0 -> software.constructs:constructs:jar:[10.0.0,11.0.0): No versions available for software.constructs:constructs:jar:[10.0.0,11.0.0) within specified range -> [Help 1]

已尝试更新Maven版本、清理Maven缓存并重构建,但问题依旧。仅infra模块构建失败,排除仓库配置和网络问题,队友使用相近Java版本(我用17,队友用18)和相同Maven版本可正常构建。我的环境为Maven 3.8.6、Java 17.0.4,运行在WSL2上的Ubuntu 20.04.5 LTS。另外昨天未做任何修改时构建成功,今天又出现相同错误,怀疑是JFrog仓库端的问题。

排查与解决步骤

1. 强制指定constructs依赖版本

在infra模块的pom.xml中直接声明software.constructs:constructs的具体版本(比如10.0.155,属于[10.0.0,11.0.0)范围内的稳定版本),覆盖CDK传递的版本范围约束:

<dependencies>
    <!-- 其他依赖 -->
    <dependency>
        <groupId>software.constructs</groupId>
        <artifactId>constructs</artifactId>
        <version>10.0.155</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

2. 验证JFrog仓库依赖可用性

  • 登录团队JFrog仓库,手动搜索software.constructs:constructs,确认[10.0.0,11.0.0)范围内的版本是否存在,是否出现同步失败或误删除情况
  • 临时切换到Maven中央仓库测试,在项目settings.xml中设置中央仓库优先:
<repositories>
    <repository>
        <id>central</id>
        <url>https://repo1.maven.org/maven2/</url>
        <releases><enabled>true</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
        <priority>1</priority>
    </repository>
    <!-- 原有JFrog仓库配置,优先级设为2 -->
    <repository>
        <id>team-jfrog</id>
        <url>你的JFrog仓库地址</url>
        <priority>2</priority>
    </repository>
</repositories>

若切换后构建成功,说明确为JFrog仓库同步问题,联系运维排查仓库状态。

3. 对齐WSL2的Maven配置

  • 确认WSL2中Maven的settings.xml与队友配置完全一致,包括仓库镜像、认证信息等(重点检查JFrog的认证是否有效)
  • 清理WSL2本地Maven缓存并强制更新元数据:
rm -rf ~/.m2/repository/software/constructs
mvn clean install -U

4. 验证Java版本兼容性

临时切换到Java 18(与队友版本一致)测试,排查是否为版本差异导致的解析异常:

# 切换默认Java版本(需已安装Java 18)
sudo update-alternatives --config java
# 验证版本
java -version
# 重新构建
mvn clean install

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:25:23