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

如何使用sbt native packager创建基本项目设置,sbt,sbt-native-packager,Sbt,Sbt Native Packager,我有一个与SBT合作的项目设置,可以创建子项目工件 我一直在寻找一种方法来创建一个包含子项目JAR文件以及一些元信息的JAR文件。根据建议,我查看了sbt native packager,它似乎具有我需要的功能 我想知道是否有人愿意通过提供为插件创建框架包规范的技巧来帮助我实现这一目标 我觉得我的配置很简单 我想要的是一个包含以下内容的JAR文件: /manifest.xml module.xml modules/sub-project-one.jar sub-projec

我有一个与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)

提前谢谢你帮我做这件事


--Randy

以下是您想要的基本内容:

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映射,或者根据需要手动创建该映射

希望有帮助