我在解决artifactory存储库的位置问题时遇到了问题,因为主机名被破坏了。特别是,尽管有上下文URL或存储库密钥,目标主机部分仍被翻译为"http://artifactory"。注意单斜杠-我不会在任何地方配置这个*"。
以下是build.gradle:中的片段
artifactory {
contextUrl = 'http://myserver:8081/artifactory' //The base Artifactory URL if not overridden by the publisher/resolver
publish {
repository {
repoKey = 'libs-snapshot-local'
maven = true
username = 'user'
password = 'password'
}
defaults {
publications ('mavenJava')
}
}
resolve {
repository {
repoKey = 'libs-release'
maven = true
username = 'user'
password = 'password'
}
}
}
我看到的错误是:
> Could not get resource 'http:/artifactory/libs-release/org/springframework/boot/spring-boot-starter-parent/1.3.0.RELEASE/spring-boot-starter-parent-1.3.0.RELEASE.pom'.
> Target host must not be null, or set in parameters.
您将在上面看到"http:"后面的单斜杠和域名"artifactory"。奇怪的
我还尝试在每个发布和解析块中再次指定上下文URL,结果相同。settings.gradle和build.properties中都没有任何可能覆盖上下文URL的内容。几个小时后,我被难住了。劝告
我最终在上下文URL中加倍了域前的斜杠,如下所示:
contextUrl = 'http:////myserver:8081/artifactory'
然后,它将正确构建解析程序URL,如下所示:
http://myserver:8081/artifactory/libs-release
不。
如果主机无效,例如包含下划线,则可能发生这种情况。我在主机上加了一个下划线,就可以得到这个确切的问题,当我把它拿出来的时候,这个问题就消失了。这里看起来有类似的问题:
https://stackoverflow.com/questions/29775942/maven-repositories-with-underscores-in-the-url-gives-notransportexception-in-a
主机被认为是无效的,不用于连接。也许额外的斜杠绕过了这一点,使myserver:8801通过类似于路径的一部分而不是主机来逃避验证。