Java Heroku段塞尺寸计算?
Heroku如何计算段塞大小 我在做一个简单的谷歌网络工具包网络应用。我使用SpringRoo来帮助我编写锅炉代码,它创建了一个小应用程序“expenses”,与GoogleIO上显示的应用程序相同 在生成的POM.xml文件中,我添加了一个jetty runner,就像在Heroku的spring mvc教程中一样 现在,当我在终端中运行Java Heroku段塞尺寸计算?,java,gwt,maven,build,heroku,Java,Gwt,Maven,Build,Heroku,Heroku如何计算段塞大小 我在做一个简单的谷歌网络工具包网络应用。我使用SpringRoo来帮助我编写锅炉代码,它创建了一个小应用程序“expenses”,与GoogleIO上显示的应用程序相同 在生成的POM.xml文件中,我添加了一个jetty runner,就像在Heroku的spring mvc教程中一样 现在,当我在终端中运行git push heroku master时,maven开始在heroku端获取依赖项,我获得了[INFO]构建成功,但heroku拒绝了我的推送 ----
git push heroku master
时,maven开始在heroku端获取依赖项,我获得了[INFO]构建成功
,但heroku拒绝了我的推送
-----> Push rejected, your compiled slug is 138.0MB (max is 100MB).
See: http://devcenter.heroku.com/articles/slug-size ! Heroku push rejected, slug too large
本地创建时,我生成的war文件的大小为31Mb。但是目标目录的大小类似于编译的slug大小,所以我添加了一个slugignore文件
$ cat .slugignore
target/*
!target/*.war
把这个推给Heroku,它仍然向我抛出这个推拒绝,你编译的slug是138.0MB(最大是100MB)。
所以我的问题是Heroku计算它的弹头大小?我已经阅读了他们的文档,但非常稀少。从
您的段塞大小将在成功编译结束时显示。通过重新签出应用程序、删除.git目录并运行du-hsc,您可以粗略估计本地的slug大小
$ du -hsc | grep total
由于这是Google上最早的链接之一,我想我应该添加我找到的解决方案,通过Chris Auer的一篇简单博客文章,其中详细介绍了添加maven插件执行: 编辑:根据oers的评论,上面链接的亮点是在插件执行中声明maven clean插件,包括目标/目录(和所有子目录),同时排除*.war文件。插件的执行阶段应该在安装阶段(而不仅仅是清理阶段)调用 就整体而言(如果网站宕机),它看起来是这样的:
<plugins>
....
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<filesets>
<fileset>
<directory>target/</directory>
<includes>
<include>**/*</include>
</includes>
<excludes>
<exclude>dependency/*.jar</exclude>
<exclude>*.war</exclude>
</excludes>
<followSymlinks>false</followSymlinks>
</fileset>
</filesets>
<excludeDefaultDirectories>true</excludeDefaultDirectories>
</configuration>
<executions>
<execution>
<id>auto-clean</id>
<phase>install</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
....
....
maven清洁插件
2.4.1
目标/
**/*
依赖项/*.jar
*.战争
假的
真的
自动清洗
安装
清洁的
....
您可以共享pom.xml和.gitignore文件吗?是的,在这里。希望它们完好无损,因为我已经做了一些工作,但我已经从另一个分支机构获取了它们。我没有看到任何东西会导致鼻涕虫这么大。你能申请支持吗?完成后,我提出了一个低优先级的请求,因为这只是为了玩,而不是为了制作:)如果你能写出来,如果这个问题得到解决,那就太酷了!鉴于最初的问题是关于Java应用程序的,上述计算也应该在应用程序编译后进行(通过
mvn package
)以包括生成输出。@ryanbrainard是的。听起来很合理。此外,它还为您提供了一些有关可传递依赖项管理的想法。Heroku上的Java应用程序已经需要在所有可传递依赖项中进行复制,因此这些将包含在计算中。例如,请参见在本示例项目中使用绑定到包的副本依赖项
,虽然这在理论上可以回答问题,但在此处包含答案的基本部分,并提供链接以供参考。