Maven 人工梯度解析URL不正确且不一致

Maven 人工梯度解析URL不正确且不一致,maven,gradle,artifactory,Maven,Gradle,Artifactory,我有一个Artifactory(版本4.15.0)实例,它为一个带有多个工件的Maven2存储库提供服务。Gradle(3.3版)可以很好地解析和下载大多数依赖项。然而,有些人无法解决一个奇怪的错误,即Gradle Artifactory插件解析器查找错误的URL。有趣的是,正确的URL用于定位POM,然后当它尝试下载JAR时,使用了错误的URL POM URL [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Executing r

我有一个Artifactory(版本4.15.0)实例,它为一个带有多个工件的Maven2存储库提供服务。Gradle(3.3版)可以很好地解析和下载大多数依赖项。然而,有些人无法解决一个奇怪的错误,即Gradle Artifactory插件解析器查找错误的URL。有趣的是,正确的URL用于定位POM,然后当它尝试下载JAR时,使用了错误的URL

POM URL

[DEBUG] [org.apache.http.impl.execchain.MainClientExec] Executing request HEAD http://artifactoryLocation:8081/artifactory/libs-release/org/swinglabs/swingx/swingx-all/1.6.5-1/swingx-all-1.6.5-1.pom HTTP/1.1
jarurl

[DEBUG] [org.gradle.internal.resource.transport.http.HttpClientHelper] Performing HTTP HEAD: http://artifactoryLocation:8081/artifactory/libs-release/org.swinglabs.swingx/swingx-all/1.6.5-1/swingx-all-1.6.5-1.jar
您可以看到,出于某种原因,所使用的jarurl包含
,而不是
/
。我不确定为什么会发生这种情况。POM已正确下载,而JAR依赖项无法解析和下载。有什么建议吗

另一个有趣的发现是正在使用
artifactoryivy解析器
而不是
artifactorymaven解析器
。如前所述,该存储库是Artifactory中的Maven2存储库,并且在Gradle build.Gradle文件中也有这样的描述-没有提到关于Ivy的任何内容,但Ivy解析器正在使用中。我不确定这是否是问题的一部分

格雷德尔先生

apply plugin: 'java'
apply plugin: 'com.jfrog.artifactory'

repositories {

}

buildscript {
  repositories {
    maven {
        url 'http://artifactoryLocation:8081/artifactory/libs-release'
        credentials {
            username = "${artifactory_user}"
            password = "${artifactory_password}"
        }
    }

    jcenter()
  }
  dependencies {
    //Check for the latest version here: http://plugins.gradle.org/plugin/com.jfrog.artifactory
    classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4+"
  }
}

dependencies {
  compile 'javax.media:jmf:2.1.1e'
  compile 'com.bbn.openmap:openmap:5.0'
  compile 'org.igniterealtime.smack:smack:3.2.2'
  compile 'org.igniterealtime.smack:smackx:3.2.2'
  compile 'org.swinglabs.swingx:swingx-all:1.6.5-1'
  compile 'gov.nasa.worldwind:worldwind:2.1.0'
}

artifactory {
  contextUrl = "${artifactory_contextUrl}"   //The base Artifactory URL if not overridden by the publisher/resolver
  publish {
    repository {
        repoKey = 'libs-release-local'
        username = "${artifactory_user}"
        password = "${artifactory_password}"
        maven = true
    }
  }
  resolve {
    repository {
        repoKey = 'libs-release'
        username = "${artifactory_user}"
        password = "${artifactory_password}"
        maven = true
    }
  }
}

在我的项目中,我也使用Artifactory,我使用artifactorygradle插件只是为了发布。作为源回购协议的定义,我使用类似于以下内容:

repositories {
    maven {
        url 'http://artifactoryLocation:8081/artifactory/libs-release'
        credentials {
            username = "${artifactory_user}"
            password = "${artifactory_password}"
        }
    }
}

请试着把它放到你的build.gradle中。

你能发布你的build.gradle吗?请同时发布gradle版本。@MartinLinha我发布了这个版本。gradle@HenryGradle版本是3.3。我不明白为什么它需要一个特殊的插件来解决工件。对于其他回购经理来说,这是开箱即用的。但这并不能解决问题。目前,我可以解决一些依赖关系,但问题仍然存在,正如文章中所述。问题出在
vs
/
.Hm中。我认为如果依赖项解析失败,构建也会失败。在输出中有一个URL序列,Gradle试图从中获取缺少的依赖项。此列表中的URL仍然是带点的错误URL?