2015-01-20 16 views
7

Ho un progetto modulo multi SBT che è configurato per l'assemblaggio sbt. In questo progetto voglio saltare la generazione di jar grassi per i sottoprogetti che non sono pensati per essere eseguibili al fine di accelerare l'accumulo. Ma non sono sicuro di come sia fatto.SBT assemblaggio saltare alcuni progetti parziali

risposta

0

Proprio non includono le impostazioni di assemblaggio dei moduli che non lo richiedono.

Ad esempio, utilizzando SBT 0.13.5 e SBT-assemblaggio 0.11.2, qui è un progetto multimodulo. Se si esegue assembly in radice, proprio il progetto "app" sarà trasformata in un barattolo di grasso.

project/Build.scala

import sbt._ 
import Keys._ 
import sbtassembly.Plugin.assemblySettings 

object MyApp extends Build { 

    lazy val root = Project("root", file(".")).aggregate(common, app) 

    lazy val common = Project("common", file("common")) 

    lazy val app = Project("app", file("app")).settings(assemblySettings: _*).dependsOn(common) 

} 

common/src/main/scala/com/example/common/Hello.scala

package com.example.common 

object Hello { 
    def hello(name: String): String = s"Hello, $name" 
} 

app/src/main/scala/com/example/hello/App.scala

package com.example.hello 

import com.example.common.Hello._ 

object Main extends App { 
    println(hello(args(0))) 
} 
+3

Ma il suo un plugin di auto, quindi non sto aggiungendo le impostazioni di montaggio a qualsiasi progetto. – monkjack

+0

Vorrei sapere che anche, fondamentalmente radice/assemblaggio risolve creare singoli pacchetti jar per tutti i sottomoduli invece di pacchetto jar una radice incluse le dipendenze di tutti i sottoprogetti. – lisak

+0

In pratica applica le impostazioni di assieme per ogni progetto presente nella definizione di build. C'è un'impostazione 'assembleArtifact: = false' ma non sembra avere alcun effetto. Assembla ancora il progetto. – lisak

Problemi correlati