scala - SBT 插件不使用自定义解析器

标签 scala sbt

我正在尝试添加 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")

我可以确认它托管在我的 Ivy 代理中的插件,但这甚至不是问题,因为 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用那个语法?
  • 如果问题 1) 的答案是肯定的:在定义这些解析器时有没有办法避免冗余?例如我在 <project_home>/build.sbt 中定义了完全相同的那些
  • 最重要的是:为什么 sbt 构建不使用解析器中指定的我的 Ivy 代理来检索 sbt-native-packager 插件?
  • 最佳答案

  • 是的,这是为插件定义解析器的正确方法
  • 这实际上非常棘手:您试图在插件构建和构建之间共享设置。从 sbt 的角度来看,这些是“独立的”项目。有使用项目引用从构建中访问插件build设置的解决方案,但它们是 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文件按字母顺序评估,解析器按它们在每个文件中出现的顺序添加。
  • 关于scala - SBT 插件不使用自定义解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34044432/

    相关文章:

    scala - Scala 中的一般理解

    java - Scala 按分隔符拆分列表的惯用方法是什么?

    scala - REPL 使用 IMain、Akka 和 sbt : get import working

    scala - com.eed3si9n#sbt-assembly的libraryDependencies; 0.13.0 : not found

    scala - Scala 有像 C# 那样的对象初始化吗?

    scala - IntelliJ 似乎没有选择某些 sbt 库,没有代码完成

    java - 创建一个泛型类(具有通配符类型)和多个构造函数

    scala - 找不到模块 : com. typesafe.activator#activator-ui;(未知)

    scala - 多项目 sbt-assembly 问题

    java - 子项目路由 Play 2.4