肠道肠道gradle分辨率URL不正确且不一致



我有一个文物(版本4.15.0)实例,该实例为Maven2存储库提供了几个文物。Gradle(版本3.3)可以解决并下载大多数依赖项。但是,有些人无法解决奇数错误,而Gradle Artifactory插件解析器寻找错误的URL。有趣的是,使用了正确的URL来定位POM,然后当它尝试下载罐子时,使用了错误的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

jar url

[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

由于某种原因,所使用的JAR URL包含.而不是/。我不确定为什么会发生这种情况。jar依赖项无法解决和下载时,正确下载了POM。有什么建议吗?

另一个有趣的发现是使用artifactory-ivy-resolver代替artifactory-maven-resolver。如前所述,存储库是文物中的Maven2存储库,并在Gradle Build.gradle文件中所述 - 有关Ivy的内容没有任何提及,但正在使用Ivy Resolver。我不确定这是否是问题的一部分。

build.gradle

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
    }
  }
}

在我的项目中,我还使用文物,我只使用文物Gradle插件来发布。作为源回购定义,我使用了类似的东西:

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

尝试将其放在您的build.gradle上。

最新更新