我正在尝试将sbt-native-packager插件添加到我的sbt版本中。出于多种原因,我不希望我的构建依赖于默认的sbt存储库,我已阻止在网络上访问它们,并通过以下方式向我的<project_home>/project/plugins.sbt
添加了一个解析器:
resolvers += "local-repo-plugins" at "file:///" + baseDirectory.value + "/libs/repo/"
resolvers += Resolver.url("my-ivy-proxy-plugins", url("http://fullURLForRepo/"))(Patterns("[organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]") )
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.7.4")
我可以确认它在我的常春藤代理中托管的插件,但这甚至不是问题,因为sbt仍在尝试转到默认的回购:
[info] Resolving com.typesafe.sbt#sbt-native-packager;0.7.4 ...
[error] Server access Error: Connection timed out url=https://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.sbt/sbt-native-packager/scala_2.10/sbt_0.13/0.7.4/ivys/ivy.xml
[error] Server access Error: Connection timed out url=https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-native-packager/scala_2.10/sbt_0.13/0.7.4/ivys/ivy.xml
[error] Server access Error: Connection timed out url=https://repo1.maven.org/maven2/com/typesafe/sbt/sbt-native-packager_2.10_0.13/0.7.4/sbt-native-packager-0.7.4.pom
此外,这个完全相同的自定义解析器在解析库依赖关系时,在我的<project_home>/build.sbt
上工作得很好(包括一个基于本地文件系统的解析器)。
虽然我理解为什么我的项目构建中使用的解析器与我<project_home>/project/plugins.sbt
中使用的解析器不同,但我对我刚才描述的问题有几个问题:
<project_home>/project/plugins.sbt
?<project_home>/build.sbt
答案 0 :(得分:2)
是的,这是为插件定义解析器的正确方法
这实际上非常棘手:您正在尝试在插件构建和构建之间共享设置。这些是&#34;分开&#34;从sbt的角度来看项目。有一些解决方案使用项目参考来从构建中获取对插件构建设置的访问权限,但它们是quite tricky。如果这是一个公司环境,您仍然无法访问默认存储库,那么使用自定义sbt.boot.properties
可能会更容易。你可以从default file开始,为0.13.x
更改sbt.boot.properties
应该可以从Server access errors
。
您提供的日志中没有任何内容表明该插件无法从您的代理解析,只是在尝试访问官方存储库时超时。使用默认的sbt.boot.properties,sbt将尝试按定义解析器的顺序解析伪像:
local
typesafe-ivy-releases: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]
maven-central
sonatype-snapshots: https://oss.sonatype.org/content/repositories/snapshots
然后在.sbt
目录中的任何<project_home>/project/
文件中找到任何解析器。据我所知,sbt
文件按字母顺序进行评估,并且按照它们在每个文件中出现的顺序添加解析器。
答案 1 :(得分:1)
我认为你们都错了,它应该是这样的:
my_project / project / plugins.sbt 应该有:
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.7.4")
和 my_project / project / project / build.sbt 应该有:
resolvers += ...
它们是两种不同的构建定义......
答案 2 :(得分:0)
似乎文档尚未更新,要求您将resolvers
放入plugins.sbt
中。将resolvers ++= Seq("Artima Maven Repository" at "http://repo.artima.com/releases")
移至build.sbt
可解决此问题。