Gradle 依赖项 - com.google.auto:auto-common:1.0-SNAPSHOT

Gradle dependency - com.google.auto:auto-common:1.0-SNAPSHOT

如何在我的 gradle 构建中解决 com.google.auto:auto-common:1.0-SNAPSHOT(传递依赖)问题?

build.gradle:

apply plugin: 'java'

repositories {
  maven {
    mavenLocal()
    mavenCentral()
    url "http://snapshots.maven.codehaus.org/maven2"
    url "http://oss.sonatype.org/content/groups/public"
    url "http://nativelibs4java.sourceforge.net/maven"
    url "http://repository.jboss.org/"
  }
}

dependencies {
  compile 'com.google.dagger:dagger:2.0-SNAPSHOT'
  compile 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT'
  compile 'com.google.guava:guava:18.0'
  compile 'com.google.protobuf:protobuf-java:2.6.1'

  compile 'com.nativelibs4java:javacl:1.0-SNAPSHOT'
  compile 'org.jogamp.gluegen:gluegen-rt-main:2.0.2'
  compile 'org.jogamp.jogl:jogl-all-main:2.0.2'

  testCompile 'junit:junit:4.12'
  testCompile 'org.mockito:mockito-core:1.9.5'
  testCompile 'com.google.truth:truth:0.25'
}

结果:

$ gradle build
:compileJava

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all dependencies for configuration ':compile'.
> Artifact 'com.google.auto:auto-common:1.0-SNAPSHOT@jar' not found.

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

BUILD FAILED

依赖关系树:(截断)

$ gradle dependencies

compile - Classpath for compiling the main sources.
+--- com.google.dagger:dagger:2.0-SNAPSHOT
|    \--- javax.inject:javax.inject:1
+--- com.google.dagger:dagger-compiler:2.0-SNAPSHOT
|    +--- com.google.dagger:dagger:2.0-SNAPSHOT (*)
|    +--- com.google.dagger:dagger-producers:2.0-SNAPSHOT
|    |    +--- com.google.dagger:dagger:2.0-SNAPSHOT (*)
|    |    \--- com.google.guava:guava:18.0
|    +--- com.google.auto:auto-common:1.0-SNAPSHOT <-------auto-common--------
|    |    \--- com.google.guava:guava:18.0
|    \--- com.google.guava:guava:18.0
+--- com.google.guava:guava:18.0
+--- com.google.protobuf:protobuf-java:2.6.1
+--- com.nativelibs4java:javacl:1.0-SNAPSHOT
|    \--- com.nativelibs4java:javacl-core:1.0-SNAPSHOT
|         +--- com.nativelibs4java:opencl4java:1.0-SNAPSHOT
|         |    \--- com.nativelibs4java:bridj:0.7-SNAPSHOT
|         |         \--- com.google.android.tools:dx:1.7
|         \--- com.nativelibs4java:nativelibs4java-utils:1.6-SNAPSHOT
+--- org.jogamp.gluegen:gluegen-rt-main:2.0.2
|    \--- org.jogamp.gluegen:gluegen-rt:2.0.2
\--- org.jogamp.jogl:jogl-all-main:2.0.2
     \--- org.jogamp.jogl:jogl-all:2.0.2

我试过为 auto-common 添加显式依赖,但没有成功。

令我惊讶的是,搜索像 "com.google.auto:auto-common:1.0-SNAPSHOT repository" 这样的东西很少。看起来 1.0-SNAPSHOT 根本不在 Maven Central 中。有趣的是,它看起来像 1.0-SNAPSHOT 在 jboss 的存储库中,但我的 gradle 构建似乎没有找到它。

有人以前见过这样的东西吗?有帮助吗?

它将按以下方式工作 - 每个 maven url 应在单独的 maven{} 块中指定 - 运行 copyToLibs 验证任务:

apply plugin: 'java'

repositories {
  mavenLocal()
  mavenCentral()
  [
    "http://snapshots.maven.codehaus.org/maven2",
    "http://oss.sonatype.org/content/groups/public",
    "http://nativelibs4java.sourceforge.net/maven",
    "http://repository.jboss.org/"
  ].each { address ->
    maven {
      url address
    }
  }
}

dependencies {
  compile 'com.google.dagger:dagger:2.0-SNAPSHOT'
  compile 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT'
  compile 'com.google.guava:guava:18.0'
  compile 'com.google.protobuf:protobuf-java:2.6.1'

  compile 'com.nativelibs4java:javacl:1.0-SNAPSHOT'
  compile 'org.jogamp.gluegen:gluegen-rt-main:2.0.2'
  compile 'org.jogamp.jogl:jogl-all-main:2.0.2'

  testCompile 'junit:junit:4.12'
  testCompile 'org.mockito:mockito-core:1.9.5'
  testCompile 'com.google.truth:truth:0.25'
}

task copyToLib(type: Copy) {
   from configurations.runtime
   into 'libs'
}

按照您指定 url 的方式,最后一个 winning(涵盖所有先前定义的)。