При создании сценария сборки ant для генерации Javadoc Eclipse получает ошибку OutOfMemoryError.
В сборке ant есть настройки -Xmx512m and -Xms512m
на вкладке JRE в конфигурации выполнения.
Это прекрасно работает для компиляции приложения.
Единственная проблема с Javadoc-частью сборки. Вот файл build.xml
<target name="JavaDoc" description="Create Javadocs">
<javadoc destdir="c:/javadoc" windowtitle="My API">
<classpath refid="application.classpath" />
<packageset dir="Source">
<include name="**" />
</packageset>
</javadoc>
</target>
Когда запускается скрипт сборки, я вижу двухэтапный процесс,
Eclipse запускает
org.eclipse.ant.internal.ui.antsupport.InternalAntRunner
Visual VM показывает, что этот процесс запускается с аргументами памяти кучи, перечисленными выше.
Затем этот процесс порождает 2-й процесс "JavaDoc"
, и аргументы виртуальной машины не передаются вместе с ним.
В VisualVM может быть подтверждено, что процесс JavaDoc имеет значение по умолчанию -Xms8m и около 64m значения Xmx, прежде чем выдается ошибка OOM.
В настройках Ant в Eclipse я попытался добавить переменную 'ANT_OPTS' для передачи аргументов JVM в JavaDoc.
Изменение не сработало.
Сборка работает, если я создаю командный файл и устанавливаю значения ANT_OPTS.
set ANT_OPTS=-Xms512m -Xmx512m
ant -file C:\myApp\build.xml JavaDoc
Но создание командного файла отрицательно сказывается на том, что я могу собрать все прямо в Eclipse.
Я также попытался добавить в файл сборки файл, который жестко закодировал бы размер кучи
<arg value="ANT_OPTS=-Xms512m -Xmx512m" />
Есть идеи, как установить значение, чтобы мой Javadoc появлялся с большим размером кучи?