Gradle - 无法从Maven仓库中找到依赖项

7

我在使用以下 build.gradle 文件时遇到了构建错误。

apply plugin: 'java'
apply plugin: 'idea'

sourceCompatibility = 1.7
version = '1.0'

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile 'org.foo.group:my-artifact:0.0.1-final'
}

group、artifact和version都是正确的。我已经在一个Maven项目中尝试过,并且构建成功了,但在Gradle项目中出现以下错误:

:jar UP-TO-DATE
:assemble UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all dependencies for configuration ':testRuntime'.
> Could not find org.foo.group:my-artifact:0.0.1-final.
  Required by:
      :my-gradle-project:1.0

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
tlin-deploy-tool
BUILD FAILED

如果本地的Maven存储库包含模块的POM文件,但不包含它的构件,就会出现这种情况。请问是这种情况吗? - Peter Niederwieser
@Peter:不,那不是问题所在。即使您从本地存储库中删除该工件,它也会引发相同的错误。 - mhshams
1
参考 @PeterNiederwieser 描述的情况,如果您遇到了 Dependency in Maven local with POM and no JAR file results in dependency resolve failure 的问题,则有可能会出现依赖解析失败的情况。 - Alberto
1个回答

10

我不确定出了什么问题,但请尝试检查maven和gradle是否使用相同的.m2仓库路径。可以使用以下选项清晰地显示:

  • mvn -X
  • gradle --debug

对于gradle,当无法从MavenLocal中找到jar时,会显示此特定消息;.m2仓库路径将被显示:

23:44:08.152 [DEBUG] [org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver] org.foo.group#my-artifact;0.0.1-final的资源不可达:res=MissingResource: /home/wisent/.m2/repository/org/foo/group/my-artifact/0.0.1-final/my-artifact-0.0.1-final.jar


谢谢您。在Maven中央仓库中缺少父POM。 - mhshams
但是你的 Maven 项目可以使用相同的依赖项构建它。很奇怪。 - ceilfors
是的,似乎Maven不关心父POM。 - mhshams
6
好的,如果他们没有使用相同的仓库怎么办?你该如何告诉Gradle本地maven仓库的位置? - Simon Forsberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接