2015-08-12 12 views
9

Il mio progetto sbt prende più di 15 minuti quando lo faccioprogetto di SBT è molto lento per risolvere le dipendenze

sbt clean compile 

Io sono su una macchina robusto su AWS. Sono abbastanza certo che non è un problema di risorse sulla larghezza di banda della cpu o internet. Inoltre, ho eseguito questo comando alcune volte e quindi la cache dell'edera è popolata.

Ecco tutti i miei file relativi costruire

/build.sbt

name := "ProjectX" 

version := "1.0" 

scalaVersion := "2.10.5" 

libraryDependencies += ("org.apache.spark" %% "spark-streaming" % "1.4.1") 
    .exclude("org.slf4j", "slf4j-log4j12") 
    .exclude("log4j", "log4j") 
    .exclude("commons-logging", "commons-logging") 
    .%("provided") 

libraryDependencies += ("org.apache.spark" %% "spark-streaming-kinesis-asl" % "1.4.1") 
    .exclude("org.slf4j", "slf4j-log4j12") 
    .exclude("log4j", "log4j") 
    .exclude("commons-logging", "commons-logging") 

libraryDependencies += "org.mongodb" %% "casbah" % "2.8.1" 

//test 
libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.4" % "test" 

//logging 
libraryDependencies ++= Seq(
    //facade 
    "org.slf4j" % "slf4j-api" % "1.7.12", 
    "org.clapper" %% "grizzled-slf4j" % "1.0.2", 
    //jcl (used by aws sdks) 
    "org.slf4j" % "jcl-over-slf4j" % "1.7.12", 
    //log4j1 (spark) 
    "org.slf4j" % "log4j-over-slf4j" % "1.7.12", 
    //log4j2 
    "org.apache.logging.log4j" % "log4j-api" % "2.3", 
    "org.apache.logging.log4j" % "log4j-core" % "2.3", 
    "org.apache.logging.log4j" % "log4j-slf4j-impl" % "2.3" 
    //alternative to log4j2 
    //"org.slf4j" % "slf4j-simple" % "1.7.5" 
) 

/project/build.properties

sbt.version = 0.13.8 

/project/plugins.sbt

logLevel := Level.Warn 

addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "0.7.0") 

resolvers += "sonatype-releases" at "https://oss.sonatype.org/content/repositories/releases/" 

/progetto/assemblaggio y.sbt

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.13.0") 
+0

Avete eseguito 'sbt -v 'per ottenere un output sbt verboso? Potrebbe dare un suggerimento su quali moduli impiegano molto tempo per risolverli o su quali repository. Nota: un paio di repository su * artifactoryonline.com * sono stati migrati su * bintray.com * e sono stati chiusi di recente. –

+0

quindi, è lento anche quando gli artefatti sono già nella cache dell'edera? – Mysterion

+1

Abbiamo lo stesso problema. Utilizzando scala 2.11.7 e sbt 13.9. La risoluzione DNS è veloce <3ms. Ma la risoluzione effettiva di ciascuna dipendenza richiede diversi secondi ... e in un grande progetto che può essere di mezz'ora. –

risposta

1

Sul registro vedete le voci come:

[info] [SUCCESSFUL ] org.apache.spark#spark-streaming-kinesis-asl_2.10;1.4.1!spark-streaming-kinesis-asl_2.10.jar (239ms) 

Questo è un segno che si sta scaricando questi artefatti. In altre parole, l'AMI che stai lanciando non ha la cache di Ivy popolata.

Utilizzo di sbt 0.13.12 sul mio laptop con SSD, ottengo circa 5 secondi per clean e quindi update.

so-31956971> update 
[info] Updating {file:/xxx/so-31956971/}app... 
[info] Resolving org.fusesource.jansi#jansi;1.4 ... 
[info] Done updating. 
[success] Total time: 5 s, completed Aug 25, 2016 4:00:00 AM