我正在尝试编译一个依赖于 OrmLite 的 Android 应用程序,但无论我做什么,我仍然会收到 OutOfMemory 错误。
我认为 Maven 不传递任何关于堆大小的参数的原因是我只能在其输出中看到以下内容:
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -jar/Users/mikhail.borozdin/android-sdk-macosx/platform-tools/lib/dx.jar - -dex --output=/Users/mikhail.borozdin/Documents/workspace/AndroidOrmLiteTest/target/classes.dex
我是如何尝试将参数传递给 JVM 的?
- 导出 MAVEN_OPTS=-Xmx2048m
- mvn -X install -DargLine="-Xmx2048m"
- 在 pom.xml 中设置我的插件
- 在 pom.xml 中设置我的插件
这些都不起作用。
最佳答案
如果您正在构建的项目正在使用 android-maven-plugin , 你想设置 dex mojo configuration在 maven pom.xml 文件中,例如:
<dex>
<jvmArguments>
<jvmArgument>-Xms256m</jvmArgument>
<jvmArgument>-Xmx512m</jvmArgument>
</jvmArguments>
</dex>
这是一个来自完整 pom.xml 文件的示例:
https://github.com/rtyley/agit/blob/a014c970/pom.xml#L116-121
请注意,用于 dex 配置的特定 xml 在 android-maven-plugin 版本 3.0.0 的发布前有了相当大的发展(它有 很多 其他重要改进)- 我建议确保您正在使用此版本并且配置肯定使用 <dex>
节点。
android-maven-plugin will use a 1GB heap by default在 v3.0.0 之后的版本中(在撰写本文时尚未发布)。
关于java - Maven 似乎没有将参数传递给 JVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8672551/