Gradle MavenLocal找到jar,但不包含进行编译

时间:2018-12-12 10:38:49

标签: java gradle gradlew

build.gradle中,我有:

repositories {
  mavenLocal()
  mavenCentral()
}

dependencies {
  compile 'com.test:test:1.2.1'
}

gradlew build找到了罐子,但是我无法使用罐子中的任何类,因为我刚得到:

error: cannot find symbol
symbol: class MatrixMessageHandler

要在项目中使用jar,还需要执行其他步骤吗?

编辑: 我怀疑这是a事。该jar依赖于activemq-broker-5.8.0,但是gradle忽略了它,并使用了本地Maven存储库中不存在的5.15.8。我怀疑这是导致问题的原因:

11:12:41.670 [DEBUG] [io.spring.gradle.dependencymanagement.internal.VersionConfiguringAction] Using version '5.15.8' for dependency 'org.apache.activemq:activemq-broker:5.8.0'

出于某种原因,gradle会组成一个随机版本来替换本地Maven存储库(5.8.0)中的版本

1 个答案:

答案 0 :(得分:0)

出于某种原因gradle用先前的版本替换了依赖的有效版本:

11:12:41.670 [DEBUG] [io.spring.gradle.dependencymanagement.internal.VersionConfiguringAction] Using version '5.15.8' for dependency 'org.apache.activemq:activemq-broker:5.8.0'

5.15.8曾经在本地Maven存储库的pom中,但是我删除了该版本的jar并删除了gradle缓存,但是我无法得到gradle来忘记它。

rm -r ~/.gradle/caches/*

此先前的依赖项在本地Maven存储库中不存在:

org.apache.activemq:activemq-broker:5.15.8

最新依赖项存在于本地Maven存储库中

org.apache.activemq:activemq-broker:5.8.0

解决方案是强制gradle使用最新的依赖项:

compile 'org.apache.activemq:activemq-broker:5.8.0'

如果您不知道依赖项是什么,则不能选择。在这种情况下,我会在开发项目时做。清除全局缓存没有任何作用,因此我删除了build目录,从build.gradle中删除了上面的行,现在可以正常工作了。

因此,真正的问题似乎是由于过时的缓存/构建,gradle无法解决mavenLocal()中的依赖项。