【问题标题】:sbt modify the lib output directory when using sbt-native-packagersbt 使用 sbt-native-packager 时修改 lib 输出目录
【发布时间】:2015-07-25 02:48:38
【问题描述】:

如何修改最终打包 zip 的输出以将“lib”目录内容上移一级。基本上我输出一个zip,内容是这样的:

ZIP FILE CONTENT:
-- my-plugin-1.0.jar
-- /lib
    -- /lib/mydependency1.jar
    -- /lib/mydependency2.jar

 ZIP FILE CONTENT I WISH TO HAVE:
 -- my-plugin-1.0.jar
 -- mydependency1.jar
 -- mydependency2.jar

我想将“lib”中的所有内容上移一级到根输出。

sbt 版本 0.13.0

这是我的 build.sbt:

import NativePackagerHelper._

organization := "com.company.product"
name := "my-plugin"
version := "1.0"
enablePlugins(UniversalPlugin)
packageName in Universal:= "deployment"
publishArtifact in (Compile, packageDoc) := false
artifactName := {
    (sv: ScalaVersion, module: ModuleID, artifact: Artifact) =>
        artifact.name + "-" + module.revision + "." + artifact.extension
}
javacOptions ++= Seq("-source", "1.8")
mappings in Universal <+= packageBin in Compile map { jar => jar -> (jar.getName()) }
topLevelDirectory := None

plugins.sbt

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.0")

命令行:

sbt universal:packageBin

【问题讨论】:

    标签: sbt sbt-native-packager


    【解决方案1】:

    看来您的要求是sbt-native-packager 的一等公民:

    mappings in Universal ++= contentOf("src/main/resources/cache")
    

    【讨论】:

    • 您好,感谢您的回复,不过我的问题措辞不佳。我已更新问题以反映真正的问题。
    • 为了解决我的“真正”问题,我必须这样做:Universal ++= contentOf(unmanagedBase.value) 中的映射,所以你的答案是正确的。现在我只需要弄清楚如何删除 zip 中的“lib”目录。谢谢!
    • mappings 对象只是一个Seq[(File, String)]。用mappings in Universal := (mappings in Universal).filterNot { case (src, dest) =&gt; dest startsWith "lib/"}过滤掉你不想要的字符串
    猜你喜欢
    • 2016-09-15
    • 2014-01-02
    • 2014-01-27
    • 2014-02-22
    • 2016-05-19
    • 2016-12-14
    • 2022-06-22
    • 2016-10-24
    • 2017-03-21
    相关资源
    最近更新 更多