2017-02-22 60 views
0

У меня есть экземпляр Artifactory (версия 4.15.0), обслуживающий репозиторий Maven2 с несколькими артефактами. Gradle (версия 3.3) разрешает и загружает большинство зависимостей просто отлично. Однако некоторые из них не могут решить проблему с нечетной ошибкой, когда искатель плагина Gradle Artifactory ищет неправильный URL-адрес. Что интересно, правильный URL-адрес используется для поиска POM, а затем, когда он пытается загрузить JAR, используется неправильный URL-адрес.Artifactory Разрешающая способность 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 

Как вы можете видеть, по какой-то причине URL JAR используется содержит . и не /. Я не уверен, почему это происходит. POM загружен правильно, в то время как зависимости JAR не могут быть разрешены и загружены. Любые предложения исправлений?

Другая интересная находка заключается в том, что artifactory-ivy-resolver используется вместо artifactory-maven-resolver. Как указано, репозиторий является репозиторием Maven2 в Artifactory и указан как таковой в файле Gradle build.gradle. Ничего не упоминается о Ivy, но все же используется распознаватель Ivy. Я не уверен, что это часть проблемы.

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

Не могли бы вы разместить свой build.gradle? –

+0

И, пожалуйста, также опубликуйте версию градиента. – Henry

+0

@MartinLinha Я разместил build.gradle – woody

ответ

0

В моих проектах, где я также использовать Artifactory Я использую Artifactory Gradle плагин только для публикации. В качестве источника определения репо я использую что-то похожее на это:

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

Попробуйте поместить его в свой build.gradle, пожалуйста.

+0

Это не устраняет проблему. В настоящее время я могу решить некоторые зависимости, но проблемы существуют, как указано в сообщении. проблема заключается в '.' vs '/'. – woody

+0

Hm. Я предполагаю, что если разрешение зависимости не удастся, сборки тоже не сработают. На выходе у вас есть последовательность URL, где Gradle пытался получить отсутствующую зависимость. URL-адрес в этом списке по-прежнему неправильный с точками? –