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 に答える