如何使用 sbt-native-packager 创建基本项目设置

Posted

技术标签:

【中文标题】如何使用 sbt-native-packager 创建基本项目设置【英文标题】:How to create a basic project setup using sbt-native-packager 【发布时间】:2013-09-15 16:38:32 【问题描述】:

我有一个使用 SBT 的项目设置,以创建子项目工件。

我一直在寻找一种方法来创建一个包含子项目 JAR 文件以及一些元信息的 JAR 文件。根据建议,我查看了 sbt-native-packager,它似乎具有我需要的功能。

我想知道是否有人愿意通过提供有关为插件创建骨架包规范的提示来帮助我。

我觉得我的配置很简单。

我最终想要的是一个 JAR 文件,其内容如下:

/manifest.xml
 module.xml
 modules/sub-project-one.jar
         sub-project-two.jar
         sub-project-three.jar

manifest.xml 和 module.xml 文件都将从项目信息中生成。生成的 JAR 文件的名称将基于根项目的名称、版本和后缀“nkp.jar”(例如 overlay-1.0.1.nkp.jar)。

在此先感谢您为我提供的任何帮助。

-- 兰迪

【问题讨论】:

【参考方案1】:

以下是您想要的基本信息:

val createManifestXml = taskKey[File]("Creates the packaged maniest.xml")

val createModuleXml = taskKey[File]("Creates the module.xml file.")

// TODO - Define createManifestXml + createModuleXml

mappings in Universal ++= 
   Map(createManifestXml.value -> "manifest.xml"
      module.xml -> "module.xml")


mappings in Universal ++= 
   val moduleJars = 
      Seq((packageBin in subProjectOne).value, 
          (packageBin in subProjectTwo).value,
          (packageBin in subProjectThree).value)
   moduleJars map  jar =>
     jar -> s"module/$jar.getName"
   

这将确保可以生成 tgz/txz/zip。然后,您可以使用“通用”通用 -> msi 和通用 -> rpm/deb 映射,或者根据需要手动创建该映射。

希望有帮助!

【讨论】:

以上是关于如何使用 sbt-native-packager 创建基本项目设置的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sbt-native-packager 设置 docker 镜像名称

如何使用 sbt-native-packager 创建基本项目设置

如何使用 sbt-native-packager 更改通用 zip 文件名

如何使用 sbt-native-packager 创建 Upstart Zip 包?

如何使用 sbt-native-packager 在 Docker 中使二进制文件可执行?

如何在运行时为使用 sbt-native-packager 捆绑的应用程序加载配置文件