当前位置: 首页 > 知识库问答 >
问题:

sbt-assembly不拾取配置特定设置

须曜文
2023-03-14

我正在从工具sbt更新一个旧的0.7.x构建文件,谢天谢地,它同时从名称中删除了对“Simple”的引用。

val Foo = config("foo") extend Compile

lazy val assemblyFoo = TaskKey[File]("assembly-foo")

lazy val root = Project(id = "root", base = file("."))
  // .configs(Foo)  // needed? doesn't change anything
  .settings(
    inConfig(Foo)(inTask(assembly) {
      assemblyJarName := "wtf.jar"
    }),
    scalaVersion := "2.11.7",
    assemblyFoo <<= assembly in Foo
  )
lazy val root = Project(id = "root", base = file("."))
  .settings(
    inTask(assembly) {
      assemblyJarName := "wtf.jar"
    },
    scalaVersion := "2.11.7",
    assemblyFoo <<= assembly in Foo
  )

但是现在我不能为不同的配置使用不同的jar名称(这就是全部要点)。

正如SBT的作者之一和sbt-assembly的作者在一篇博客文章中所描述的那样,这应该是可行的。它也写在这个Stackoverflow问题中。但是这个例子需要一个sbt-assembly的古董版本(从2013年开始的0.9.0,在自动插件等之前),并且似乎不适用于当前的版本。

共有1个答案

沈建柏
2023-03-14

如果定义了一个新的配置,就必须重新定义(?)一个人将要使用的所有任务。显然对于sbt-assembly来说,这意味着运行baseAssemblySettings:

val Foo = config("foo") extend Compile

lazy val assemblyFoo = TaskKey[File]("assembly-foo")

lazy val root = Project(id = "root", base = file("."))
  .settings(
    inConfig(Foo)(baseAssemblySettings /* !!! */ ++ inTask(assembly) {
      jarName := "wtf.jar"
    }),
    scalaVersion := "2.11.7",
    assemblyFoo  := (assembly in Foo).value
  )

用sbt 0.13.9和sbt-assembly 0.14.1测试。

 类似资料:
  • 错误 以下bean失败: null 基本上不会将日志记录或跟踪信息放入控制台。 pom中的依赖项

  • .sbt vs .scala 构建语句定义 一个项目的构建定义可以是在项目根目录中以 .sbt 后缀结尾的文件,也可以是一个在子目录 project 下以 .scala 结尾的文件 这章主要讨论 .sbt 文件定义,这种定义已经适合大部分情况. .scala 定义方式典型的用在多个 .sbt 文件分享共用的定义语句或者是复杂的项目构建中。更多信息参考.scala 定义 什么是构建语句? 通过验证和

  • 问题内容: 如何在Java中的long的特定位置设置/取消设置位? 例如, 我想在位置2设置位,在位置3取消设置位,因此相应的long将是, 有人可以帮我怎么做吗? 问题答案: 要设置一点,请使用: 擦除一下使用: 切换一下用途: 请注意,我使用0b?。您也可以使用任何整数,例如: 但是,这使得更难知道正在更改哪个位。 使用二进制可让您查看将要设置/擦除/切换的确切位。 要动态设置位,请使用: 将

  • 在 Serenity 平台,配置设置是只是简单的类,如: [SettingScope("Application"), SettingKey("Logging")] private class LogSettings { public LoggingLevel Level { get; set; } public string File { get; set; } publi

  • 我目前正在使用这个camel-kafka-starter maven依赖项在Spring Boot中自动配置我的kafka camel组件。 理想情况下,在我的application.properties中,我会有40+个设置,我只想转移到我的用户定义的骆驼KafkaComponent。是否需要创建另一个Config类并映射所有在camel文档中定义的值?(类似于String@Value注释) 编

  • 我尝试安装sbt-assembly来使用我所有的scala文件及其依赖项创建jar文件。 我已经安装了sbt(shell中的命令“sbt sbt-version”给出了以下版本:0.13.9)。我从Github存储库(https://Github.com/sbt/sbt-assembly)下载了sbt-assembly并将其解压到一个文件夹中。 如果有人知道我做错了什么,那会很有帮助的。 谢了!