scala - sbt 发布本地 : Undefined resolver 'local'

标签 scala sbt ivy

尝试时 publish-local在 sbt 中,我得到以下输出:

[info] :: delivering :: com.mycompany#util_2.9.1;0.1.0-SNAPSHOT :: 0.1.0-SNAPSHOT :: integration :: Tue Jan 15 11:23:01 CET 2013
[info]  delivering ivy file to /Users/martink/code/my-project/util/target/scala-2.9.1/ivy-0.1.0-SNAPSHOT.xml
[trace] Stack trace suppressed: run last my-util/*:publish-local for the full output.
[error] (my-util/*:publish-local) Undefined resolver 'local'

我怀疑这是因为我的构建文件中的一些设置,因为发布本地适用于新项目。关于如何制作的任何想法 publish-local又工作了?

最佳答案

我们发现问题是由覆盖 external-resolvers 引起的:

val myRepo = "my-public" at "http://my-nexus-server/content/groups/public/" 
externalResolvers := Seq(publicRepo)

我们这样做是为了从我们的解析器中排除默认的 Maven 中央存储库。然而,这也删除了 publish-local 使用的本地解析器。 .

解决方案是重新添加本地解析器:
val ivyLocal = Resolver.file("local", file(Path.userHome.absolutePath + "/.ivy2/local"))(Resolver.ivyStylePatterns)
externalResolvers := Seq(ivyLocal, myRepo)

另一种解决方案是不覆盖 externalResolvers但只需禁用 Maven 中心。
resolvers := Seq(myRepo)
externalResolvers <<= resolvers map { rs =>
  Resolver.withDefaultResolvers(rs, mavenCentral = false)
}

一旦你publish-local , ivy 似乎优先于本地快照版本而不是远程快照版本。要让另一个项目接收您发布的工件,只需运行 sbt compile在那个项目中(似乎 sbt update 甚至没有必要)。

另见 http://www.scala-sbt.org/release/docs/Detailed-Topics/Library-Management.html

关于scala - sbt 发布本地 : Undefined resolver 'local' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14336368/

相关文章:

utf-8 - 在 C# 中将 Linq to Xml 文件保存为 ANSI 而不是 UTF-8 (Ivy)

java - Maven还是 Ivy ?对于已经投入生产的系统,哪一个更好?还有其他的区别?

scala - 向 JsValue 添加元素?

scala - 二进制序列化 - 在 Scala 2.10 上替换 Marshal

java - 将两个存在于 hive 中的 spark 表连接起来

scala - 线程 "main"java.lang.NoClassDefFoundError : org/apache/spark/sql/catalyst/analysis/OverrideFunctionRegistry 中的异常

ubuntu - 如何使用 apt-get 在 ubuntu/debian 上安装 sbt

scala - 不兼容的 Jackson 版本 : Spark Structured Streaming

intellij-idea - 为什么 IntelliJ IDEA 13.1 显示有这么多行的 sbt 文件为红色?

grails - 如何构建 Grails 插件并将其部署到本地 Ivy 存储库?