我有一个项目设置与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)。
提前感谢您帮助我解决这个问题。
- 兰迪
答案 0 :(得分: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映射或根据需要手动创建映射。
希望有所帮助!