scala - Heroku Slug 大小为 222 MB/Play Framework 2.1/

标签 scala heroku sbt playframework-2.1

我在 Heroku 上的应用程序段码大小为 222 mb。相当大,超出了允许的 200MB。

因此,我检查了这些东西:

  • 检查我的源代码大小: 89,9 莫 知道 80,2 钼 来自玩app的目标文件夹 .
  • 检查我的 .gitignore 文件以确保 Play 应用程序的目标文件夹被排除在外。这是我的 .gitignore 文件:

  • .DS_Store         
    logs   
    project/project    
    project/target   
    target                 // target well precised here
    tmp     
    .history    
    dist      
    /.idea     
    / *.iml  //space here otherwise appears as a comment here    
    /out     
    /.idea_modules    
    /.classpath    
    /.project    
    /RUNNING_PID     
    /.settings
    


    检查我的 SBT Ivy 缓存大小: 100,9 钼

    这里详细介绍了每个文件夹的大小(在左侧):

    MikaPc:cache Mika$ du -xak .|sort -n|tail -50
    1664 ./org.neo4j/neo4j/docs 1664 ./org.neo4j/neo4j/docs/neo4j-1.9.M05-javadoc.jar
    1668 ./org.neo4j/neo4j-kernel/docs
    1668 ./org.neo4j/neo4j-kernel/docs/neo4j-kernel-1.9.M05-javadoc.jar
    1680 ./org.springframework/spring-test 1748 ./org.neo4j/neo4j
    1752 ./org.aspectj/aspectjweaver/jars
    1752 ./org.aspectj/aspectjweaver/jars/aspectjweaver-1.7.1.jar
    1860 ./org.springframework/spring-jdbc
    1888 ./org.springframework.data/spring-data-commons
    1980 ./org.scala-sbt/main/jars
    1980 ./org.scala-sbt/main/jars/main-0.12.2.jar
    1992 ./org.scala-sbt/main
    2100 ./org.springframework/spring-context/docs
    2100 ./org.springframework/spring-context/docs/spring-context-3.2.0.RELEASE-javadoc.jar 2104 ./com.sun.jersey 2348 ./org.springframework/spring-core
    2356 ./org.springframework.data/spring-data-neo4j
    2404 ./org.springframework/spring-beans
    2776 ./org.apache.lucene/lucene-core
    2800 ./org.springframework/spring-web
    2808 ./org.springframework/spring-webmvc
    2812 ./org.aspectj/aspectjweaver/docs
    2812 ./org.aspectj/aspectjweaver/docs/aspectjweaver-1.7.1-javadoc.jar 2844 ./org.apache.lucene 3016 ./org.neo4j/neo4j-kernel/jars
    3820 ./org.springframework/spring-context
    4356 ./org.neo4j/neo4j-cypher/jars
    4356 ./org.neo4j/neo4j-cypher/jars/neo4j-cypher-1.9.M05.jar
    4436 ./org.specs2/specs2_2.10/docs
    4436 ./org.specs2/specs2_2.10/docs/specs2_2.10-1.13.1-SNAPSHOT-javadoc.jar 4584 ./org.scalaz/scalaz-core_2.10/docs
    4584 ./org.scalaz/scalaz-core_2.10/docs/scalaz-core_2.10-7.0-SNAPSHOT-javadoc.jar 4824 ./org.neo4j/neo4j-cypher 5712 ./org.neo4j/neo4j-kernel
    5936 ./org.aspectj/aspectjweaver
    6024 ./org.springframework.data 6484 ./org.aspectj
    6520 ./org.specs2/specs2_2.10/jars
    6520 ./org.specs2/specs2_2.10/jars/specs2_2.10-1.13.1-SNAPSHOT.jar
    6812 ./org.scala-sbt 8288 ./org.scalaz/scalaz-core_2.10/jars
    8288 ./org.scalaz/scalaz-core_2.10/jars/scalaz-core_2.10-7.0-SNAPSHOT.jar 11500 ./org.specs2/specs2_2.10 11524 ./org.specs2
    13132 ./org.scalaz/scalaz-core_2.10 13140 ./org.scalaz
    15832 ./org.neo4j 23500 ./org.springframework
    98552 .



    我的 SBT 构建文件包含以下依赖项:
    val appDependencies = Seq(
        jdbc,
        anorm,
        "org.springframework" % "spring-aop" % "3.2.0.RELEASE",
        "org.springframework" % "spring-aspects" % "3.2.0.RELEASE",
        "org.springframework" % "spring-beans" % "3.2.0.RELEASE",
        "org.springframework.data" % "spring-data-commons-core" % "1.4.1.RELEASE",
        "org.springframework" % "spring-expression" % "3.2.0.RELEASE",
        "org.springframework" % "spring-jdbc" % "3.2.0.RELEASE",
        "org.springframework" % "spring-orm" % "3.2.0.RELEASE",
        "org.springframework" % "spring-test" % "3.2.0.RELEASE",
        "org.springframework" % "spring-tx" % "3.2.0.RELEASE",
        "org.springframework.data" % "spring-data-neo4j" % "2.2.0.RELEASE" excludeAll(
          ExclusionRule(organization = "com.sun.jdmk"),
          ExclusionRule(organization = "com.sun.jmx"),
          ExclusionRule(organization = "javax.jms")
          ),
        "org.neo4j" % "neo4j" % "1.9.M05" excludeAll(
            ExclusionRule(organization = "org.neo4j", name="neo4j-kernel")
          ),
        "org.neo4j" % "neo4j-kernel" % "1.9.M05" % "test" classifier "tests" classifier "",
        "asm" % "asm-all" % "3.1",
        "org.springframework.data" % "spring-data-neo4j-rest" % "2.1.0.RELEASE" excludeAll(
          ExclusionRule(organization = "org.neo4j")
          ),
         "org.neo4j" % "neo4j-rest-graphdb" % "1.9.M04",
         "org.scalaz" %% "scalaz-core" % "7.0-SNAPSHOT" withSources(),
         "org.specs2" %% "specs2" % "1.13.1-SNAPSHOT" % "test" withSources(),
         "org.mockito" % "mockito-all" % "1.9.0" %"test",
         "securesocial" %% "securesocial" % "master-SNAPSHOT" withSources()
      )
    

    我能做些什么来减少这个巨大的弹头尺寸?即使我删除了一些文档和 jars 源,大小也会很大。

    尽管 .gitignore 似乎真的发送了 Play 应用程序的目标文件夹。文件

    当然,我已经使用这个 buildpack 创建了我的 Heroku 应用程序:https://github.com/heroku/heroku-buildpack-scala

    此外,有没有办法在 SBT(或 Play 配置)中精确,某些依赖项(如 Specs2(测试))不应在 Heroku 生产环境中下载?

    编辑---------

    我运行了以下命令来显示我在 Heroku 上推送的实际大小:
    MikaPc:wwa Mika$ heroku run bash    
    Running `bash` attached to terminal... up, run.9266        
    ~ $ du -h --apparent-size --max-depth 2       
    5.3K    ./test/resources         
    12K ./test/unit         
    5.6K    ./test/functional          
    6.5K    ./test/context          
    8.5K    ./test/acceptance         
    5.2K    ./test/integration         
    47K ./test           
    5.0K    ./app/helpers          
    33K ./app/controllers           
    11K ./app/models          
    161K    ./app/assets          
    34K ./app/views           
    8.0K    ./app/applicationservices           
    5.0K    ./app/repositories           
    20K ./app/utils           
    281K    ./app             
    8.7M    ./target/scala-2.10           
    1.4M    ./target/resolution-cache          
    143K    ./target/streams             
    60M ./target/staged           
    71M ./target          
    1.1M    ./.sbt_home/bin          
    834K    ./.sbt_home/.sbt           
    1.9M    ./.sbt_home         
    30K ./public/images            
    171K    ./public/javascripts          
    9.6K    ./public/stylesheets         
    214K    ./public         
    4.0K    ./.ivy2/cache        
    8.0K    ./.ivy2         
    1.1M    ./.jdk/bin         
    19M ./.jdk/lib         
    203K    ./.jdk/include          
    227M    ./.jdk/jre           
    247M    ./.jdk             
    2.8M    ./project/target          
    20K ./project/project            
    53M ./project/boot           
    56M ./project         
    12K ./conf           
    375M    .         
    

    压缩前的 375 Mo 我想最终会达到 222Mo .. hum

    获胜者是:227M ./.jdk/jre参与slug大小的一部分。这……正常吗?

    最佳答案

    Heroku 最近改变了我们与您的应用程序一起部署的 JDK 的构建方式。现在它比以前大了很多。我们还提高了 slug 大小限制,因此这不会妨碍您的应用程序,但会使发布速度变慢。

    我们将更新文档以匹配当前的实际限制。

    关于scala - Heroku Slug 大小为 222 MB/Play Framework 2.1/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15294178/

    相关文章:

    scala - sbt 使用的默认 scalaVersion 在哪里?

    playframework - 向 Play 2.0 (scala/sbt) 项目添加构建步骤

    maven - 为什么交叉构建约定将 scala 版本附加到 artifactId?

    scala - 如何根据作为映射的列值过滤 Spark 数据帧条目

    scala - 强制使用 inferSchema=True 的 Spark.read() 将数字列设置为不可空

    spring - 无法执行目标 org.maven.plugins :maven-compiler-plugin:3. 8.1:compile (default-compile) on project (target 11)

    javascript - 通过 socket.io 与 heroku 应用程序进行通信

    scalaz-stream:如何以与其余部分不同的方式处理 "header"(第一 block )?

    java - Scala 与 Java 9 不兼容 - java.lang.NoClassDefFoundError

    ruby-on-rails - 由于 Bootsnap 和 Rake 问题,Heroku Rails 构建失败