2014-03-31 37 views
0

我有一個build.scala文件,其中有一段看起來像下面的剪輯。 我使用sbt-assembly爲部署構建所有相關庫的jar文件。如何從sbt包中排除程序集?

這樣做很好。我的問題是我運行'程序集',並建立〜16MB的核心文件,然後運行'包'試圖構建core.jar文件。它構建了core.jar - 但是它隨後用一個空文件覆蓋了我的core-deps.jar文件(因爲core-deps沒有自己的代碼)。

我該如何構建core.jar和core-deps.jar,而不是'package'吹走core-deps.jar?

lazy val deps = Project("core-deps", file("."), 
    settings = basicSettings ++ 
       sbtassembly.Plugin.assemblySettings ++ 
       Seq(assemblyOption in assembly ~= { _.copy(includeScala = false) }) ++ 
       addArtifact(Artifact("core-deps", "core-deps"), sbtassembly.Plugin.AssemblyKeys.assembly) ++  
       Seq(
        libraryDependencies ++= 
         // Master list of all used libraries so it gets added to the deps.jar file when you run assembly 
         compile(commons_exec, commons_codec, commons_lang, casbah, googleCLHM, joda_time, scalajack, spray_routing, spray_can, spray_client, spray_caching, akka_actor, akka_cluster, akka_slf4j, prettytime, mongo_java, casbah_gridfs, typesafe_config, logback), 
        jarName in assembly <<= (scalaVersion, version) map { (scalaVersion, version) => "core-deps_" + scalaVersion.dropRight(2) + "-" + version + ".jar" } 
       )) aggregate(core) 

lazy val core = project 
    .settings(basicSettings: _*) 
    .settings(buildSettings: _*) 
    .settings(libraryDependencies ++= 
     compile(commons_exec, prettytime, commons_codec, casbah, googleCLHM, scalajack, casbah_gridfs, typesafe_config, spray_routing, spray_client, spray_can, spray_caching, akka_actor, akka_slf4j, akka_cluster, logback) ++ 
     test(scalatest, parboiled, spray_client) 
    ) 

回答

2

爲什麼不使用assemblyPackageDependency sbt-assembly附帶的任務?見Excluding Scala library, your project, or deps JARs

如果由於某種原因,你真的要禁用的核心DEPS項目package任務,你可以嘗試重新佈線packageBin

packageBin := (outputPath in assembly).value 

這將做什麼,但返回的文件名。

相關問題