Gradle 在本地 Maven 仓库中找不到 JAR 包。

4
我依赖于spring-beans;4.0.0.RELEASE,我使用以下命令将其安装到我的mavenLocal缓存中:
mvn install:install-file -Dfile=/Users/jric/Downloads/spring-beans-4.0.0.RELEASE.jar -DpomFile=/Users/jric/Downloads/spring-beans-4.0.0.RELEASE.pom
但是gradle-1.11无法找到该依赖项,没有提供明确的解释。我找到了一条相关的堆栈跟踪信息:
11:26:35.432 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainDependencyResolver] Discarding resolve failure.
java.lang.NullPointerException
        at org.gradle.api.internal.artifacts.repositories.resolver.MavenLocalResolver.isOrphanedPom(MavenLocalResolver.java:49)
        at org.gradle.api.internal.artifacts.repositories.resolver.MavenLocalResolver.findMetaDataArtifact(MavenLocalResolver.java:42)
        at org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver.resolveStaticDependency(ExternalResourceResolver.java:165)
        at org.gradle.api.internal.artifacts.repositories.resolver.MavenResolver.getDependency(MavenResolver.java:83)
        at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.LocalModuleVersionRepository.getLocalDependency(LocalModuleVersionRepository.java:44)
        at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.memcache.CachedRepository.getLocalDependency(CachedRepository.java:67)

以下是一些可能相关的数据:
SCML-JRichardson:share jric$ ls /Users/jric/.m2/repository/org/springframework/spring-beans/
4.0.0.RELEASE           maven-metadata-local.xml
SCML-JRichardson:share jric$ cat /Users/jric/.m2/repository/org/springframework/spring-beans/maven-metadata-local.xml 
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <groupId>org.springframework</groupId>
  <artifactId>spring-beans</artifactId>
  <versioning>
    <release>4.0.0.RELEASE</release>
    <versions>
      <version>4.0.0.RELEASE</version>
    </versions>
    <lastUpdated>20150307021047</lastUpdated>
  </versioning>
</metadata>
SCML-JRichardson:share jric$ ls /Users/jric/.m2/repository/org/springframework/spring-beans/4.0.0.RELEASE/
_maven.repositories     spring-beans-4.0.0.RELEASE.jar  spring-beans-4.0.0.RELEASE.pom
1个回答

15

Gradle有一个特殊的语句可以查找本地Maven仓库:mavenLocal()。请确保在全局repositories部分调用它:

Gradle有一个特殊的声明可用于查找本地Maven仓库:mavenLocal()。请确保在全局repositories部分中调用它:

repositories {
    mavenLocal()  // <- Here
    mavenCentral()
}

如果不起作用,请确保您没有意外将其添加到buildscript部分中。这会将依赖项添加到您的构建环境而不是您的代码中,这通常不是您想要的。

buildscript {            // <- Probably not what you mean
    repositories {
        mavenLocal()
        mavenCentral()
    }
}

buildscript 部分让我有些困惑,谢谢你的指点! - Oblivionkey3
这是我解决问题的方法,我从buildscript/repositories中删除了mavenLocal(),并将其放置在另一个allprojects/repositories脚本中。 :) - iamjoshua

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