2015-12-17 40 views
0

我有一個由多個模塊組成的庫,我想打包並將其作爲單個工件發佈。這裏是我的build.sbt如何將多模塊庫打包爲一個罐子

lazy val root = Project(id = "root", 
    base = file(".")) aggregate(module1, module2) 

lazy val module1 = Project(id = "module1", 
    base = file("module1")) 

lazy val module2 = Project(id = "module2", 
    base = file("module2")) dependsOn module1 

的片段當我運行sbt package我只在根target得到一個幾乎空罐子(只有清單內)。我不想使用sbt-assembly,因爲依賴項應該由發佈的pom管理,而不是打包在已發佈的jar中。根據模塊發佈3個工件,其中root是一個空工件,也是一個可接受的選項。

+0

你嘗試過sbt-native-packager嗎? https://github.com/sbt/sbt-native-packager – leshkin

回答

0

以下作品,至少對於package(沒試過publish):

lazy val root = Project(id = "root", base = file(".")) 
    .aggregate(module1, module2) 
    .settings(
    mappings in (Compile, packageBin) ++= { 
     val mod1 = (mappings in (module1, Compile, packageBin)).value 
     val mod2 = (mappings in (module2, Compile, packageBin)).value 
     mod1 ++ mod2 
    } 
) 

lazy val module1 = Project(id = "module1", 
    base = file("module1")) 

lazy val module2 = Project(id = "module2", 
    base = file("module2")) dependsOn module1 

的映射簡要描述here

相關問題