Sbt-assembly: embalagem leva muito tempo

Criado em 31 jan. 2013  ·  44Comentários  ·  Fonte: sbt/sbt-assembly

Não tenho certeza se sou o único que está enfrentando esse problema, mas
A embalagem leva muito tempo. Pode ser que estou faltando algumas configurações ou algo assim.
Os últimos três passos são os mais lentos, construímos aqui por muito tempo.

[info] Merging 'org/apache/http/annotation/Immutable.class' with strategy 'deduplicate'
[info] SHA-1: WrappedArray(26, -125, -113, 64, 37, 94, -6, -79, -79, 41, 34, -92, 42, 7, -72, 31, -97, -57, 55, -2)
[info] Packaging ~/workspace/myproj/xyz/target/xyz-assembly-1.0.jar ..
[info] Done packaging.
[success] Total time: 724 s, completed 31 Jan, 2013 1:51:10 PM

Por favor, deixe-me saber se alguém precisar de mais informações.

Comentários muito úteis

Para sua informação, ter esse problema e resolução era desligar o software antivírus (mac OS)

cry

Caso mais alguém tenha que sentir essa dor

Todos 44 comentários

Não posso trabalhar neste problema sem ter as etapas de reprodução exatas e um registro completo. Alguns projetos demoram mais tempo do que outros? Pode ser dependente da biblioteca que você está usando? A última parte do log indica que vários jars incluem org/apache/http/annotation/Immutable.class . Há mais fusão acontecendo?

É intermitente, às vezes fica preso para sempre.

rastreamento de pilha completo

[info] Loading global plugins from /Users/pankajmittal/.sbt/plugins
[info] Loading project definition from /Users/pankajmittal/workspace/workflow/project
[warn] Multiple resolvers having different access mechanism configured with same name 'local'. To avoid conflict, Remove duplicate project resolvers (`resolvers`) or rename publishing resolver (`publishTo`).
[info] Set current project to workflow (in build file:/Users/pankajmittal/workspace/workflow/)
> project taskmanager
[info] Set current project to taskmanager (in build file:/Users/pankajmittal/workspace/workflow/)

> assembly
[info] Packaging /Users/pankajmittal/workspace/workflow/taskmanager/target/scala-2.9.2/taskmanager_2.9.2-1.0-sources.jar ...
[info] Done packaging.
[info] Compiling 10 Scala sources to /Users/pankajmittal/workspace/workflow/taskmanager/target/scala-2.9.2/classes...
[info] Compiling 3 Scala sources to /Users/pankajmittal/workspace/workflow/taskmanager/target/scala-2.9.2/classes...
[warn] /Users/pankajmittal/workspace/workflow/taskmanager/src/main/scala/com/livestream/taskmanager/TaskManagerServiceConfig.scala:7: class ServerConfig in package config is deprecated: no direct replacement
[warn] class TaskManagerServiceConfig extends ServerConfig[TaskManagerService] {
[warn]                                        ^
[warn] one warning found
[info] No tests to run for taskmanager/test:test
[info] Including antlr-2.7.2.jar
[info] Including c3p0-0.9.1.2.jar
[info] Including logback-classic-1.0.1.jar
[info] Including logback-core-1.0.1.jar
[info] Including jsr305-1.3.9.jar
[info] Including guava-13.0.jar
[info] Including h2-1.3.170.jar
[info] Including amqp-client-3.0.0.jar
[info] Including paranamer-2.4.1.jar
[info] Including finagle-core-6.0.3.jar
[info] Including finagle-http-6.0.3.jar
[info] Including finagle-ostrich4-6.0.3.jar
[info] Including ostrich-9.0.4.jar
[info] Including scala-json-3.0.1.jar
[info] Including util-codec-6.0.4.jar
[info] Including util-collection-6.0.4.jar
[info] Including util-core-6.0.4.jar
[info] Including util-eval-6.0.4.jar
[info] Including util-hashing-6.0.4.jar
[info] Including util-jvm-6.0.4.jar
[info] Including util-logging-6.0.4.jar
[info] Including akka-actor-2.0.5.jar
[info] Including config-0.5.0.jar
[info] Including commons-chain-1.1.jar
[info] Including commons-codec-1.6.jar
[info] Including commons-collections-3.2.1.jar
[info] Including commons-digester-1.8.jar
[info] Including commons-lang-2.6.jar
[info] Including commons-logging-1.1.1.jar
[info] Including commons-net-3.1.jar
[info] Including commons-pool-1.6.jar
[info] Including commons-validator-1.3.1.jar
[info] Including dom4j-1.1.jar
[info] Including netty-3.5.5.Final.jar
[info] Including mysql-connector-java-5.1.6.jar
[info] Including jna-3.3.0.jar
[info] Including lift-json_2.9.2-2.5-SNAPSHOT.jar
[info] Including opencsv-1.8.jar
[info] Including httpclient-4.1.3.jar
[info] Including httpcore-nio-4.2.jar
[info] Including httpcore-4.2.jar
[info] Including httpmime-4.1.3.jar
[info] Including struts-core-1.3.8.jar
[info] Including struts-taglib-1.3.8.jar
[info] Including struts-tiles-1.3.8.jar
[info] Including velocity-tools-2.0.jar
[info] Including velocity-1.7.jar
[info] Including quartz-2.1.3.jar
[info] Including scalap-2.9.2.jar
[info] Including slf4j-api-1.6.4.jar
[info] Including squartz_2.9.2-1.0-SNAPSHOT.jar
[info] Including syslog4j-0.9.30.jar
[info] Including oro-2.0.8.jar
[info] Including postgresql-9.1-901.jdbc4.jar
[info] Including jedis-2.1.0.jar
[info] Including sslext-1.2-0.jar
[info] Including scala-compiler.jar
[info] Including scala-library.jar
[info] Including java-gearman-service-0.6.6.jar
[info] Including gdata-client-1.0.jar
[info] Including gdata-core-1.0.jar
[info] Including gdata-spreadsheet-3.0.jar
[info] Including google-oauth-client-1.10.0-beta.jar
[info] Merging 'License.txt' with strategy 'rename'
[info] Merging 'NOTICE.txt' with strategy 'rename'
[info] Merging 'META-INF/NOTICE.txt' with strategy 'rename'
[info] Merging 'META-INF/NOTICE' with strategy 'rename'
[info] Merging 'META-INF/license' with strategy 'rename'
[info] Merging 'META-INF/LICENSE.txt' with strategy 'rename'
[info] Merging 'LICENSE.txt' with strategy 'rename'
[info] Merging 'META-INF/LICENSE' with strategy 'rename'
[info] Merging 'org/apache/http/annotation/ThreadSafe.class' with strategy 'deduplicate'
[info] Merging 'org/apache/http/annotation/NotThreadSafe.class' with strategy 'deduplicate'
[info] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
[info] Merging 'org/apache/http/annotation/GuardedBy.class' with strategy 'deduplicate'
[info] Merging 'META-INF/INDEX.LIST' with strategy 'discard'
[info] Merging 'reference.conf' with strategy 'concat'
[info] Merging 'META-INF/services/java.sql.Driver' with strategy 'filterDistinctLines'
[info] Merging 'org/apache/http/annotation/Immutable.class' with strategy 'deduplicate'
[info] SHA-1: WrappedArray(9, 3, 98, -116, -112, 53, 88, -58, 19, -63, 22, 57, 99, 107, 15, 63, -114, 113, 53, 87)
[info] Packaging /Users/pankajmittal/workspace/workflow/taskmanager/target/taskmanager-assembly-1.0.jar ...
[info] Done packaging.
[success] Total time: 809 s, completed 1 Feb, 2013 5:56:44 PM

versão sbt: 0.12.2
Informação do sistema :
Software OS X 10.8.2 (12C60), Processo: 2,5 GHz intel core i5, Memória: 4gb 1333 MHz DDR3

Deixe-me saber se você deseja que eu monitore o sistema durante o processo. Eu monitorei a memória, quase 600 MB estavam livres, a CPU estava 97% ociosa.

Você tentou executar jstack <pid> enquanto o processo travava? Se você pudesse postar sua saída, poderia pelo menos ver em qual chamada ele está gastando seu tempo. (Pode ser executado um modo de exibição para ver se ele retorna resultados semelhantes)

O recurso de cache foi solicitado em # 59 e adicionado ao último 0.8.5. Isso calcula o SHA-1 de cada arquivo * .class antes do empacotamento. Tente executar clean e test primeiro para ver se a montagem acelera.

Tenho o mesmo problema com o SBT Assembly 0.8.5, Scala 2.9.2 e SBT 0.12.2. Aqui está minha saída de jstack: https://gist.github.com/4707228

Como eu disse é intermitente, nem sempre acontece. Aqui estão alguns jstacks quando aconteceu da última vez.

https://gist.github.com/pankajmi/4712919

https://gist.github.com/pankajmi/4712926

Mesmo aqui! e não sei se acaba logo!

jstack: https://gist.github.com/amrnt/82a716d70b9e1919bbcd

Estou no Macbook Air 4GB - Scala 2.10.0

Parece que a maioria das saídas do seu jstacks estão em alguma fase de cálculo do hash, o que é consistente com minha teoria de que isso foi introduzido como parte do # 59. Eu poderia adicionar uma configuração para habilitar / desabilitar o comportamento de cache e desligá-lo por padrão.

Depois de atualizar meu sbt de 0.12.0 para 0.12.2 Funciona bem!

Mesmo? @pankajmi Você poderia tentar o sbt 0.12.2 e ver se a situação muda para você também?

0.8.6 foi desativado com o cache padrão desativado.

Eu estava tendo problemas com o 0.12.2, como mencionei acima.
Deixe-me tentar a versão 0.8.6 e ver, ela terá algum efeito colateral?

Tentei sbt-assembly versão 0.8.6 com sbt 0.12.2. , veja o tempo gasto abaixo -

[info] Including antlr-2.7.2.jar
[info] Including c3p0-0.9.1.2.jar
[info] Including logback-classic-1.0.1.jar
[info] Including logback-core-1.0.1.jar
[info] Including jsr305-1.3.9.jar
[info] Including guava-13.0.jar
[info] Including h2-1.3.170.jar
[info] Including paranamer-2.4.1.jar
[info] Including finagle-core-6.0.3.jar
[info] Including finagle-http-6.0.3.jar
[info] Including finagle-ostrich4-6.0.3.jar
[info] Including ostrich-9.0.4.jar
[info] Including scala-json-3.0.1.jar
[info] Including util-codec-6.0.4.jar
[info] Including util-collection-6.0.4.jar
[info] Including util-core-6.0.4.jar
[info] Including util-eval-6.0.4.jar
[info] Including util-hashing-6.0.4.jar
[info] Including util-jvm-6.0.4.jar
[info] Including util-logging-6.0.4.jar
[info] Including akka-actor-2.0.5.jar
[info] Including config-0.5.0.jar
[info] Including commons-chain-1.1.jar
[info] Including commons-codec-1.6.jar
[info] Including commons-collections-3.2.1.jar
[info] Including commons-digester-1.8.jar
[info] Including commons-lang-2.6.jar
[info] Including commons-logging-1.1.1.jar
[info] Including commons-net-3.1.jar
[info] Including commons-pool-1.6.jar
[info] Including commons-validator-1.3.1.jar
[info] Including dom4j-1.1.jar
[info] Including netty-3.5.5.Final.jar
[info] Including mysql-connector-java-5.1.6.jar
[info] Including jna-3.3.0.jar
[info] Including lift-json_2.9.2-2.5-SNAPSHOT.jar
[info] Including opencsv-1.8.jar
[info] Including httpclient-4.1.3.jar
[info] Including httpcore-nio-4.2.jar
[info] Including httpcore-4.2.jar
[info] Including httpmime-4.1.3.jar
[info] Including struts-core-1.3.8.jar
[info] Including struts-taglib-1.3.8.jar
[info] Including struts-tiles-1.3.8.jar
[info] Including velocity-tools-2.0.jar
[info] Including velocity-1.7.jar
[info] Including quartz-2.1.3.jar
[info] Including scalap-2.9.2.jar
[info] Including slf4j-api-1.6.4.jar
[info] Including squartz_2.9.2-1.0-SNAPSHOT.jar
[info] Including syslog4j-0.9.30.jar
[info] Including oro-2.0.8.jar
[info] Including postgresql-9.1-901.jdbc4.jar
[info] Including jedis-2.1.0.jar
[info] Including sslext-1.2-0.jar
[info] Including scala-compiler.jar
[info] Including scala-library.jar
[info] Including java-gearman-service-0.6.6.jar
[info] Including gdata-client-1.0.jar
[info] Including gdata-core-1.0.jar
[info] Including gdata-spreadsheet-3.0.jar
[info] Including google-oauth-client-1.10.0-beta.jar
[info] Merging 'License.txt' with strategy 'rename'
[info] Merging 'NOTICE.txt' with strategy 'rename'
[info] Merging 'META-INF/NOTICE.txt' with strategy 'rename'
[info] Merging 'META-INF/NOTICE' with strategy 'rename'
[info] Merging 'META-INF/license' with strategy 'rename'
[info] Merging 'META-INF/LICENSE.txt' with strategy 'rename'
[info] Merging 'LICENSE.txt' with strategy 'rename'
[info] Merging 'META-INF/LICENSE' with strategy 'rename'
[info] Merging 'org/apache/http/annotation/ThreadSafe.class' with strategy 'deduplicate'
[info] Merging 'org/apache/http/annotation/NotThreadSafe.class' with strategy 'deduplicate'
[info] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
[info] Merging 'org/apache/http/annotation/GuardedBy.class' with strategy 'deduplicate'
[info] Merging 'META-INF/INDEX.LIST' with strategy 'discard'
[info] Merging 'reference.conf' with strategy 'concat'
[info] Merging 'META-INF/services/java.sql.Driver' with strategy 'filterDistinctLines'
[info] Merging 'org/apache/http/annotation/Immutable.class' with strategy 'deduplicate'
[info] Packaging /Users/pankajmittal/workspace/workflow/taskmanager/target/taskmanager-assembly-1.0.jar ...
[info] Done packaging.
[success] Total time: 342 s, completed 13 Feb, 2013 12:52:58 PM

Ainda está demorando, e jstack é o seguinte -
https://gist.github.com/pankajmi/4942861

Isso é menos da metade do tempo que seu relatório original 724 s, e o jstack mostra que está realmente criando jar em vez de hash.

A criação da montagem leva tempo porque estamos descompactando todos os frascos e compactando-os novamente. Se você quiser evitar isso, dê uma olhada em https://github.com/sbt/sbt-onejar.

@ eed3si9n : Obrigado pela resposta, na verdade eu tentei sbt-onejar apenas para verificar o tamanho do jar que é gerado e fiquei surpreso ao ver que ele gera um jar ainda menor, embora simplesmente coloque tudo em um jar sem descompactar. Você pode me dizer quais outras vantagens podemos obter do sbt-assembly, além de supor que ele irá gerar um pequeno jar após a fusão e tudo mais? Na verdade, pensei que o sbt-assembly deveria gerar um tamanho menor.

sbt-assembly é mais simples. consulte a página de sbt-onejar para a comparação.

Descobri que sbt-assembly leva muito mais tempo para compilar do que um jar, mas é muito mais rápido executar o jar depois de compilado. Por exemplo, um dos meus aplicativos de um jar leva quase 30 segundos para iniciar, onde a mesma versão do assembly sbt é quase imediata.

Estou assumindo que a diferença é que o conflito de classes é determinado em tempo de compilação com sbt-assembly e com one-jar o carregador de classes especializado está ocorrendo em tempo de execução.

@aradke, esta é uma observação interessante. Aqui está outra especulação de por que o onejar seria mais lento: você pode acessar as entradas de um arquivo zip sem extrair o arquivo inteiro. No entanto, você não pode acessar as entradas de um arquivo zip que está dentro de outro arquivo zip sem extrair o arquivo zip interno. Portanto, para encontrar uma classe (pelo menos a primeira) com a abordagem de um jar, a JVM precisa extrair todos os jars de dependência uma vez para descobrir onde está a classe e, em seguida, carregá-la.

Ainda assim, 30 segundos parece muito lento.

Acabei de lançar 0.9.0 incorporando o pull req # 83. Isso armazena em cache os resultados de descompactação do jar e reduz o tempo de montagem para a segunda execução em diante: http://notes.implicit.ly/post/51259892611/sbt-assembly-0-9-0

Usando sbt-assembly 0.9.0, sbt 0.12.3 e scala 2.10, eu gerei um único arquivo jar de 76M em 1.612 segundos! Existe uma maneira de reduzir ainda mais o tempo de montagem?

@gip isso é para a primeira execução ou para a segunda? o armazenamento em cache deve melhorar o desempenho para a segunda execução para a frente.

Acabei de lançar 0.10.1 com mais algumas melhorias de desempenho (# 96) que devem tornar o tempo de execução mais consistente: http://notes.implicit.ly/post/65751699253/sbt-assembly-0-10-1

Estou vendo esse problema no Ubuntu (executado no VirtualBox no OS X). A montagem normalmente leva mais de 10 minutos, ou simplesmente trava a máquina inteira. Quando eu o executo com o OS X, no entanto, o tempo de compilação é <30 segundos.

Ele sempre trava enquanto / ou logo após incluir dependências. Cada inclusão parece demorar um pouco mais do que a anterior. sbt compile funciona bem.

Executando SBT 0.13.5, Scala 2.10.3 e SBT Assembly 0.11.2.

Não é um assassino, mas estranho!

@joeroot Tenho o mesmo problema de sbt assembly demorando muito mais em um convidado VirtualBox (mesmo com acesso a todos os núcleos) do que o host. Você já encontrou uma maneira de contornar isso?

Provavelmente porque o I / o do disco é mais caro dentro de uma VM (esses arquivos precisam ser lidos para determinar seus hashes SHA1)

@fblundun : Nunca encontrei uma maneira de contornar isso, em vez disso, executo set assembly de dentro do Mac, o que é um pouco frustrante.

@iangelov : Pode ser i / o, mas parece bastante extremo. Meus projetos não têm tantos arquivos, e costumo acabar travando, em vez de terminar muito lentamente.

Uma ideia sugerida por @jsuereth é que o sbt-assembly tente ler o JAR diretamente, sem descompactar primeiro. ymmv / pr bem-vindo nesta frente.

Se você estiver usando vboxfs (o padrão do Vagrant), não há como contornar isso. É lento. Você deve usar nfs vez disso.

@ eed3si9n Tenho exatamente o mesmo problema; meu projeto é barebones, spark, akka, scala 2.11.8 - havia uma opção para desativar o cálculo de SHA1 que foi adicionada? A montagem está levando mais de 774 segundos

import Dependencies._
resolvers ++= Seq(
  Resolver.sonatypeRepo("releases"),
  Resolver.sonatypeRepo("snapshots")
)
lazy val root = (project in file(".")).
  settings(
    inThisBuild(List(
      organization := "me.free",
      scalaVersion := "2.11.8",
      version := "0.1.0-SNAPSHOT"
    )),
    name := "BondAgent",
    libraryDependencies ++= Seq(akkDeps ++ Seq(scalaCheck)
      ++ Seq(shapelessDep)
      ++ sparkDeps
      ++ Seq(redisScala)
      ++ argonautDeps ++ sparkConflictResolverDeps).flatten
  )
assemblyMergeStrategy in assembly := {
  case PathList("org", "aopalliance", xs@_*) => MergeStrategy.first
  case PathList("javax", "inject", xs@_*) => MergeStrategy.first
  case PathList("javax", "servlet", xs@_*) => MergeStrategy.first
  case PathList("javax", "activation", xs@_*) => MergeStrategy.first
  case PathList("org", "xml-apis", x@_*) => MergeStrategy.first
  case PathList("javax", "stax-api", x@_*) => MergeStrategy.first
  case PathList("org", "commons-collections", x@_*) => MergeStrategy.first
  case PathList("org", "jcl-over-slf4j", x@_*) => MergeStrategy.first
  case PathList("org", "apache", xs@_*) => MergeStrategy.first
  case PathList("com", "google", xs@_*) => MergeStrategy.first
  case PathList("com", "esotericsoftware", xs@_*) => MergeStrategy.first
  case PathList("com", "codahale", xs@_*) => MergeStrategy.first
  case PathList("com", "yammer", xs@_*) => MergeStrategy.first
  case "about.html" => MergeStrategy.rename
  case PathList("META-INF", xs@_*) => MergeStrategy.discard
  case "META-INF/ECLIPSEF.RSA" => MergeStrategy.first
  case "META-INF/mailcap" => MergeStrategy.first
  case "META-INF/mimetypes.default" => MergeStrategy.first
  case "plugin.properties" => MergeStrategy.first
  case "log4j.properties" => MergeStrategy.first
  case "overview.html" => MergeStrategy.first
  case x =>
    val oldStrategy = (assemblyMergeStrategy in assembly).value
    oldStrategy(x)
}
assemblyOption in assembly := (assemblyOption in assembly).value//.copy(includeScala = false)
assemblyJarName in assembly := "BondAgent.jar"

Esta é a minha assembleia sbt -

import Versions._
import sbt._

object Dependencies {
  lazy val scalaCheck: ModuleID = "org.scalacheck" %% "scalacheck" % "1.12.2" % "test"
  lazy val akkaStream: ModuleID = "com.typesafe.akka" %% "akka-stream" % akkaStreamV
  lazy val akkaActor: ModuleID = "com.typesafe.akka" %% "akka-actor" % akkaV
  lazy val akkaSlf4j: ModuleID = "com.typesafe.akka" %% "akka-slf4j" % akkaV
  lazy val akkDeps = Seq(akkaStream, akkaActor, akkaSlf4j)
  lazy val sparkCore: ModuleID = "org.apache.spark" %% "spark-core" % sparkCoreV
  lazy val sparkSql: ModuleID = "org.apache.spark" %% "spark-sql" % sparkCoreV
  lazy val sparkDeps = Seq(sparkCore.exclude("org.eclipse.jetty.orbit", "javax.servlet").
    exclude("org.eclipse.jetty.orbit", "javax.transaction").
    exclude("org.eclipse.jetty.orbit", "javax.mail").
    exclude("org.eclipse.jetty.orbit", "javax.activation").
    exclude("commons-beanutils", "commons-beanutils-core").
    exclude("commons-collections", "commons-collections").
    exclude("commons-collections", "commons-collections").
    exclude("xml-apis", "xml-apis").
    exclude("javax.xml.stream", "stax-api")
    exclude("com.esotericsoftware.minlog", "minlog"), sparkSql.exclude("org.eclipse.jetty.orbit", "javax.servlet").
    exclude("org.eclipse.jetty.orbit", "javax.transaction").
    exclude("org.eclipse.jetty.orbit", "javax.mail").
    exclude("org.eclipse.jetty.orbit", "javax.activation").
    exclude("commons-beanutils", "commons-beanutils-core").
    exclude("commons-collections", "commons-collections").
    exclude("commons-collections", "commons-collections").
    exclude("xml-apis", "xml-apis").
    exclude("javax.xml.stream", "stax-api")
    exclude("com.esotericsoftware.minlog", "minlog"))
  lazy val funcDeps: ModuleID = "org.typelevel" %% "cats-core" % catsCoreV
  lazy val shapelessDep: ModuleID = "com.chuusai" %% "shapeless" % shapelessV
  lazy val hadoopClientDep: ModuleID = "org.apache.hadoop" % "hadoop-client" % hadoopCV
  lazy val parquetClient: ModuleID = "org.apache.parquet" % "parquet" % parquetV
  lazy val redisScala: ModuleID = "com.github.etaty" %% "rediscala" % redisScalaV
  lazy val argonautDeps: Seq[ModuleID] = Seq("io.argonaut" %% "argonaut").map(_ % argonautV)
  lazy val sparkConflictResolverDeps: Seq[ModuleID] = Seq("com.fasterxml.jackson.core" % "jackson-core" % "2.8.7",
  // test deps
    "com.fasterxml.jackson.core" % "jackson-databind" % "2.8.7",
    "com.fasterxml.jackson.core" % "jackson-annotations" % "2.8.7",
    "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.8.7",
    // With spark, to resolve java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal (error)
    //"xml-apis" % "xml-apis" % "1.4.01",
    // With spark, to resolve large stack trace on java.lang.ClassNotFoundException: de.unkrig.jdisasm.Disassembler (warning)
    "org.codehaus.janino" % "janino" % "3.0.7")
}

Não tenho certeza de como fazer isso rápido, mas está afetando meus cronogramas de desenvolvimento - qualquer ajuda, sugestão, reclamação são bem-vindos ...

@AnirudhVyas você está construindo em uma VM?

não - construir no macbook os x

@AnirudhVyas Você tem um drive SSD no seu MacBook?
Consulte https://github.com/sbt/sbt-assembly#other -things e tente desligar qualquer um dos recursos opcionais e veja se isso ajuda a sua situação.

Eu tenho um SSD, deixe-me ver, obrigado. Apresentarei um relatório ...

não há muita diferença - bem, ganhei cerca de 100 segundos se isso for um consolo ... você sabe onde está o gargalo? parece que está demorando um pouco no empacotamento ... Sinceramente, eu tenho usado esse plugin incrível por um tempo, mas nunca usei com faísca, costumava tar, pensei em tentar enquanto colocava com sbt em um novo projeto - algo está faltando ...

ok, por enquanto eu fiz meu aplicativo um envio de faísca - eu estava usando um único pacote por uma razão, com dependências de faísca fornecidas, menos coisas para lidar, ele termina em 180s ... acho muito factível. Mas seria ótimo se soubéssemos onde estava / está o gargalo para que talvez pudesse ser melhorado? Não estou querendo dizer que você ainda não tentou - minhas desculpas se pareço direto ...

Eu pessoalmente não tive problemas de desempenho, então não olhei realmente para os gargalos atuais. Se houver algum problema específico, sinta-se à vontade para criar um projeto de amostra que alguém possa examinar.

Joguei um pouco com sbt-assembly 0.14.7-SNAPSHOT .
Alterando esta linha :
(for(jar <- libsFiltered.par) yield {
para esta linha:
(for(jar <- libsFiltered) yield {
velocidade de embalagem aumentada 3 vezes (de 1544 segundos para 571 segundos).

Meu pote de gordura tem cerca de 130 MiB. Meu computador tem SSD. Alguém poderia testar essa solução no próprio projeto?
Passos obrigatórios:
1) git clone [email protected]:EnverOsmanov/sbt-assembly.git
2) cd ./sbt-assembly
3) sbt publishLocal
4) Defina a versão do plugin sbt-assembly do seu projeto para 0.14.7-SNAPSHOT

@ eed3si9n
Sinto muito, não posso compartilhar meu projeto de trabalho. Criei um projeto de amostra usando algumas postagens de
libsFiltered.par => 588-634 segundos
libsFiltered => 320-402 segundos

O tamanho do frasco de gordura é de 96 MiB.

UPD: no HDD funciona muito mais rápido, menos de 60 segundos.

Eu acho que criar> 60k arquivos durante a descompactação coloca uma grande pressão no sistema de arquivos. Fazer isso não sequencialmente adicionando par provavelmente torna as coisas um pouco piores ...

Para sua informação, ter esse problema e resolução era desligar o software antivírus (mac OS)

cry

Caso mais alguém tenha que sentir essa dor

Olá de 2019. Eu tive exatamente esse problema (sim, projeto antigo, versão antiga do sbt, mas ainda assim) e sbt clean seguido por assembly resolvi.

YMMV

Estou em sbt 0.12.01 e macOS . De vez em quando, a meta assembly simplesmente fica suspensa na etapa packaging jar . Atualizar meu sbt ajudará?

alguma atualização neste tópico está pendurada há muito tempo no ubuntu 18.04 LTS @karthicks @noahlz @devmanhinton ?

Uau, encontrei o caminho de volta a este problema através do google. Não tenho nenhuma visão, exceto tentar o que eu fiz antes (montagem limpa)

Esta página foi útil?
0 / 5 - 0 avaliações