2

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

在此先感谢您提供的帮助。

——兰迪

4

1 回答 1

2

这是您想要的基础知识:

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

希望有帮助!

于 2013-11-16T20:07:36.497 回答