如何为Gradlew构建的容器化应用添加本地Maven依赖?
问题:Docker容器内Gradle构建无法识别本地Maven仓库依赖
背景
我正在开发一个通过Docker本地运行的应用,核心Dockerfile内容如下:
FROM eclipse-temurin:17 as source COPY . /data WORKDIR /data FROM source as build RUN ./gradlew clean build --info -x test
应用通过项目内的Gradle Wrapper构建jar包。此前仅使用Maven中央仓库,build.gradle.kts的仓库配置为:
repositories { mavenCentral() }
现在需要添加本地Maven仓库中的依赖,已在上述配置中加入mavenLocal(),并在dependencies块声明了依赖。IntelliJ可以正常将该jar包加入External Libraries,但容器内构建时出现问题。
已尝试的操作
- 在
docker-compose.yml中挂载本地.m2/repository到容器内的/root/.m2/repository:volumes: - ./config:/config - ~/.m2/repository:/root/.m2/repository - 确认容器内存在目标jar包,但构建依然失败
- 尝试将
mavenLocal()替换为以下配置,均无效:maven(url = "/root/.m2/repository") # 或 maven(url = "~/.m2/repository")
构建报错信息
47.23 FAILURE: Build failed with an exception. 47.23 47.23 * What went wrong: 47.23 Execution failed for task ':compileJava'. 47.23 > Could not resolve all files for configuration ':compileClasspath'. 47.23 > Could not find com.x:y:0.0.0-main-SNAPSHOT. 47.23 Required by: 47.23 project :
--info模式下的关键日志
50.36 Resource missing. [HTTP GET: https://repo.maven.apache.org/maven2/com/x/y/0.0.0-main-SNAPSHOT/maven-metadata.xml] 50.36 Resource missing. [HTTP GET: https://repo.maven.apache.org/maven2/com/x/y/0.0.0-main-SNAPSHOT/y-0.0.0-main-SNAPSHOT.pom]
疑问
- 我遗漏了哪些必要配置?
- 是否需要在Gradle中添加额外设置,告知Gradle Wrapper去特定位置查找依赖文件?
- 如何正确将本地Maven仓库中的依赖传递到容器的构建流程中?
内容的提问来源于stack exchange,提问作者szczyzanski
相关产品推荐
相关产品推荐

