Development tips

Tomcat application deployment

For faster development we recommend not deploying OpenKM.war directly, file and create in $TOMCAT_HOME/webapps a folder alias of target/OpenKM:

To create symbolic links in Windows use "juntion.exe" application.

More information at http://technet.microsoft.com/en-us/sysinternals/bb896768.

Compile only GWT frontend module

To compile GWT modules individually execute the command:

$ mvn gwt:compile -Dgwt.module=com.openkm.frontend.Main

Configure GWT build from eclipse

Go to "Run configurations", choose "Maven build" and click on "right mouse button" to "add" new maven buil.

Compile only one GWT frontend permutation

GWT by default compiles six permutations, each one for distinct browsers. Each permutation consumes a lot of hardware resources ( RAM and CPU's).

For fast development and less compilation time enable only a single permutation.

Decreasing the number of enabled permutation, you will decrease the total compilation time needed.

You can also declare several permutations at same time, for example for enabling firefox and chrome can use:

<set-property name="user.agent" value="gecko1_8, safari"/>

Enable only firefox permutation

Edit the main.gwt.xml OpenKM project file:

<!-- Compile for Firefox only -->
<set-property name="user.agent" value="gecko1_8"/>

Enable only chrome permutation

Edit the main.gwt.xml OpenKM project file:

<!-- Compile for Firefox only -->
<set-property name="user.agent" value="safari"/>

Enable only IE permutation

Edit the main.gwt.xml OpenKM project file:

<!-- Compile for Firefox only -->
<set-property name="user.agent" value="ie8"/>

Depending the GWT version also are allowed ie6, ie9 and ie10 values.

More information at UserAgent.gwt.xml.

Configure number of CPU's to be used for compiling GWT frontend

Increasing the number of CPU's used by compiling GWT you will decrease the total compilation time needed.

GWT compilation process can use more than one cpu. You can set the number of cpu to be used with "localworkers" parameter.

Important, depending on the number of cores the memory decrease the number of gwt instances compiled at the same time, decreasing locarlWorkers, otherwise your computer may hang.

Edit the pom.xml project file.

<plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <version>${gwt.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <!-- <goal>generateAsync</goal> -->
              <!-- <goal>test</goal> -->
            </goals>
          </execution>
        </executions>
        <configuration>
          <runTarget>com.openkm.frontend.Main/index.html</runTarget>
          <modules>
            <module>com.openkm.frontend.Main</module>
          </modules>
          <localWorkers>4</localWorkers>
        </configuration>
      </plugin>

In case you're making a lot of changes in OpenKM UI (GWT) we recommend disabling the "compile" directive

Deploying script sample

You can use a deploying script:

#!/bin/bash
# @author: Kenneth Walter
 
#Cleans and re-compiles the source files
mvn -Dmaven.test.skip=true clean gwt:compile install $*
 
#Set the TARGET_DIRECTORY to the path of your tomcat installation
TARGET_DIRECTORY=~/Downloads/tomcat-7.0.27/
FILE_TO_MOVE=target/OpenKM.war
#This will only attempt to replace the existing WAR if the new WAR exists
if [ -f $FILE_TO_MOVE ]
then
   echo 'Deploying WAR to Tomcat Directory'
   cp -v $FILE_TO_MOVE $TARGET_DIRECTORY/webapps/.
   echo 'Done'
fi