2012-05-15 2 views
4

У нас есть сборка Maven, которая запускает плагин GWT (gwt-maven). Ужасно у него заканчивается память.Как я могу предоставить GWT-компилятору больше памяти при использовании GWT-Maven?

Должен ли я предоставить Maven себе больше кучи или мне нужно дать GWT больше кучи? Любая идея, как указать это для файла pom.xml?

ответ

5

Предполагаю, что параметр extraJvmArgs должен быть настроен.

+0

Пример: установить MAVEN_OPTS = -Dgwt.extraJvmArgs = "- Xms1g -Xmx2g" –

1

У меня была эта ошибка с большим проектом GWT. Ошибка, что вы, вероятно, увидите при запуске из памяти:

[ERROR] OutOfMemoryError: Increase heap size of lower gwt.jjs.maxThreads 
java.lang.OutOfMemoryError: Java heap space 

вариант extraJvmArgs должен быть установлен в сочетании с переменной MAVEN_OPTS среды (this is a possible explanation). Я также установил параметр Java -Dgwt.compiler.localWorkers=x для уменьшения количества потоков параллельной компиляции (я устанавливаю x в 1, но вы можете играть с ним, чтобы найти что-то, что работает).

Для примера настроек, которые вы должны использовать с опцией extraJvmArgs, см. Здесь post.

Обратите внимание, что вам может потребоваться добавить опцию extraJvmArgs непосредственно в конфигурацию элемента плагина - см. https://stackoverflow.com/a/5822929/157605.

2

Добавить тег extraJvmArgs под тегом конфигурации для gwt-maven-plugin.

Пример -

 <!-- GWT Maven Plugin --> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>gwt-maven-plugin</artifactId> 
      <dependencies> 
       <dependency> 
        <groupId>com.google.gwt</groupId> 
        <artifactId>gwt-user</artifactId> 
        <version>${gwtVersion}</version> 
       </dependency> 
       <dependency> 
        <groupId>com.google.gwt</groupId> 
        <artifactId>gwt-dev</artifactId> 
        <version>${gwtVersion}</version> 
       </dependency> 
       <dependency> 
        <groupId>com.google.gwt</groupId> 
        <artifactId>gwt-servlet</artifactId> 
        <version>${gwtVersion}</version> 
       </dependency> 
      </dependencies> 
      <!-- JS is only needed in the package phase, this speeds up testing --> 
      <executions> 
       <execution> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>compile</goal> 
        </goals> 
       </execution> 
      </executions> 
      <!-- Plugin configuration. There are many available options, see gwt-maven-plugin 
       documentation at codehaus.org --> 
      <configuration> 
       <runTarget>app.html</runTarget> 
       <!-- Turning This on after understanding soyc and when deferredjs count is 48.cache.js --> 
       <!-- https://developers.google.com/web-toolkit/articles/fragment_merging --> 
       <fragmentCount>25</fragmentCount> 
       --> 
       <!-- Ask GWT to create the Story of Your Compile (SOYC) (gwt:compile) --> 
       <!-- Turn This on for generating soyc. This does not work if closure compiler is turned on.--> 
       <!-- Start Generating SOYC --> 
       <compileReport>true</compileReport> 
       <compilerMetrics>true</compilerMetrics> 
       <soycDetailed>true</soycDetailed> 
       <!-- End Generating SOYC --> 
       <disableCastChecking>true</disableCastChecking> 
       <disableClassMetadata>true</disableClassMetadata> 
       <enableClosureCompiler>true</enableClosureCompiler> 
       <optimizationLevel>9</optimizationLevel> 
       <style>${gwt.style}</style> 
       <module>${gwtModule}</module> 
       <encoding>${project.build.sourceEncoding}</encoding> 
       <strict>true</strict> 
       <logLevel>INFO</logLevel> 
       <copyWebapp>true</copyWebapp> 
       <hostedWebapp> 
        ${project.build.directory}/${project.artifactId} 
       </hostedWebapp> 
       <extraJvmArgs>-Xmx896M -Xms896m -XX:PermSize=64m -XX:MaxPermSize=128m</extraJvmArgs> 
       <!-- <extraJvmArgs>-Xmx896M -Xms896m -XX:PermSize=64m -XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC -server</extraJvmArgs> --> 
      </configuration> 
     </plugin>