Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 格雷德尔赢了';t解析依赖关系(Maven将)_Java_Maven_Gradle_Maven 3_Restlet - Fatal编程技术网

Java 格雷德尔赢了';t解析依赖关系(Maven将)

Java 格雷德尔赢了';t解析依赖关系(Maven将),java,maven,gradle,maven-3,restlet,Java,Maven,Gradle,Maven 3,Restlet,我的项目通过gradle配置了依赖项。我想添加以下依赖项: compile group: 'org.restlet.jse', name: 'org.restlet.ext.apispark', version: '2.3.1' 可以在以下存储库中找到(我已将其添加到build.gradle中): 但是,当我这样做时,会出现以下错误: Could not find org.restlet.jse:org.restlet.lib.swagger-models:1.5.0-SNAPSHOT. ht

我的项目通过gradle配置了依赖项。我想添加以下依赖项:

compile group: 'org.restlet.jse', name: 'org.restlet.ext.apispark', version: '2.3.1'
可以在以下存储库中找到(我已将其添加到build.gradle中):

但是,当我这样做时,会出现以下错误:

Could not find org.restlet.jse:org.restlet.lib.swagger-models:1.5.0-SNAPSHOT.
http://maven.restlet.org/org/restlet/jse/org.restlet.lib.swagger-models/1.5.0-SNAPSHOT/maven-metadata.xml
http://maven.restlet.org/org/restlet/jse/org.restlet.lib.swagger-models/1.5.0-SNAPSHOT/org.restlet.lib.swagger-models-1.5.0-null-null.pom
http://maven.restlet.org/org/restlet/jse/org.restlet.lib.swagger-models/1.5.0-SNAPSHOT/org.restlet.lib.swagger-models-1.5.0-null-null.jar
Required by: org.restlet.jse:org.restlet.ext.apispark:2.3.1
我可以看到jar实际上在存储库中,但是Gradle没有在正确的位置寻找它,原因我不知道。为什么不在文件名中使用版本,而是使用1.5.0-null-null

我已经用pom.xml中定义的相同依赖项创建了一个Maven项目,该项目可以正常工作

如何解决这个问题?在这一点上,我还对更多的手动解决方案感兴趣:)谢谢。

诊断 这似乎与快照的“唯一性”有关。有关Maven存储库的信息,快照工件可以部署为“唯一”或“非唯一”

  • 唯一快照:每次部署快照时,都会使用时间戳和构建编号对其进行标记,这些时间戳和buildNumber被写入
    maven metadata.xml
    文件中,并被附加到其名称之后,其结果类似于:
    artifactName版本时间戳buildNumber.jar
  • 非唯一快照:每次部署快照时,它都会覆盖以前的版本,其名称的结尾类似于:
    artifactName version.jar
建议使用唯一快照,因为如果需要,可以精确地引用工件的一个版本

问题是"http://maven.restlet.org“似乎使用非唯一快照,遗憾的是,gradle似乎在处理非唯一快照时遇到问题:

如果您查看,您可以清楚地看到时间戳和buildNumber标记中的
null

这不是一个理想的解决方案,但它是有效的

解决方案2-jcenter存储库

添加包含缺少的依赖项且Gradle处理得很好的

因为您可以简单地用以下方法定义它:

repositories {
    [...]
    jcenter()
    [...]
}

似乎需要其他存储库来下载所有依赖项。也许maven可以透明地处理这个问题。运行
cp
任务时,以下脚本将成功下载所有依赖项:

apply plugin: 'java'

configurations {
   lol
}

repositories {
   jcenter()
   mavenCentral()
   maven {
      url "http://maven.restlet.org"
   }
   maven {
      url "https://repository.mulesoft.org/nexus/content/repositories/public/"
   }
}

dependencies {
   lol group: 'org.restlet.jse', name: 'org.restlet.ext.apispark', version: '2.3.1'
}

task cp(type: Copy) {
   from configurations.lol
   into 'deps'
}

有点离题了。gradle是否使用与maven相同的存储库?你能展示maven的配置吗?@Antoniossss gradle使用你告诉它使用的存储库。它可以使用Maven Central,但也可以使用其他回购协议,就像Maven一样。有关如何将Maven Central与gradle一起使用的示例,请参见。@superbob谢谢:)@Antoniossss No.gradle已配置为使用Maven Central和Maven.restle.org。Maven正在使用Maven.restlet.org和。然而,问题是maven可以解决maven.restlet.org中gradle无法解决的特定依赖关系。这是因为jcenter包含缺少的依赖关系,maven central不包含。是的,它包含。我不是说这个解决方案不好。但这并不“奇怪”。此外,从响应中可以看出,解决方案实际上是“添加jcenter存储库”。这可能会被强调以使其更清楚。这是我在实现中实际使用的解决方案。然而,答案并没有试图解释为什么它一开始就不起作用。@Opal,除非它困扰您,否则我将在我的答案中包含您的解决方案,以获得更完整的答案,因为OP实际上使用了您的解决方案。PS:我对你的答案投了赞成票,我认为我们还可以修复restlet存储库。我为此添加了一个问题:@ThierryBoileau,那真是太好了:)Maven的官方文档对这个主题(快照的唯一性)并不十分清楚。特别是关于maven版本之间的变化(1->2,2->3)。这就是为什么我在回答中没有提供很多到maven.org的链接。但无论如何,你应该能够弄清楚细节
repositories {
    [...]
    flatDir {
        dirs 'lib'
    }
    [...]
}
repositories {
    [...]
    jcenter()
    [...]
}
apply plugin: 'java'

configurations {
   lol
}

repositories {
   jcenter()
   mavenCentral()
   maven {
      url "http://maven.restlet.org"
   }
   maven {
      url "https://repository.mulesoft.org/nexus/content/repositories/public/"
   }
}

dependencies {
   lol group: 'org.restlet.jse', name: 'org.restlet.ext.apispark', version: '2.3.1'
}

task cp(type: Copy) {
   from configurations.lol
   into 'deps'
}