gwt maven war plugin configuration problem

DonX picture DonX · Dec 30, 2010 · Viewed 8.1k times · Source

I am developing a gwt application in maven. In this I am using maven war plugin. Everything works fine. When I give mvn install command it builds abc.war file in target folder. But it is not copying compiled javascript files ("module1" and "module2" directories present in target) to war directory. I want to get newly compiled javascript files in war directory. How to achieve this?

pom.xml file

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>
<groupId>example</groupId>
<artifactId>example</artifactId>
<packaging>war</packaging>
<version>12</version>
<name>gwt-maven-archetype-project</name>

<properties>
    <!-- convenience to define GWT version in one place -->
    <gwt.version>2.1.0</gwt.version>
    <noServer>false</noServer>
    <skipTest>true</skipTest>
    <gwt.localWorkers>1</gwt.localWorkers>
    <JAVA_HOME>C:\Program Files\Java\jdk1.6.0_22</JAVA_HOME>
    <!-- convenience to define Spring version in one place -->      
</properties>

<dependencies>
    <!-- Required dependencies-->
</dependencies>
<build>
    <finalName>abc</finalName>
    <outputDirectory>war/WEB-INF/classes</outputDirectory>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <verbose>true</verbose>
                <executable>${JAVA_HOME}\bin\java.exe</executable>
                <compilerVersion>1.6</compilerVersion>
                <source>1.6</source>
                <target>1.6</target>                                            
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>gwt-maven-plugin</artifactId>       
            <version>2.1.0</version>        
            <executions>
                <execution>
                    <goals>

                        <goal>compile</goal>
                        <goal>generateAsync</goal>
                        <goal>mergewebxml</goal>
                        <goal>test</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <servicePattern>**/client/**/*Service.java</servicePattern>
                <noServer>${noServer}</noServer>
                <noserver>${noServer}</noserver>
                <modules>
                <module>com.abc.example.Module1</module>
                <module>com.abc.example.Module2</module>
                </modules>
                <runTarget>com.abc.example.Module1/module1.jsp</runTarget> 
                <port>8080</port>
                <extraJvmArgs>-Xmx1024m -Xms1024m -Xss1024k -Dgwt.jjs.permutationWorkerFactory=com.google.gwt.dev.ThreadedPermutationWorkerFactory</extraJvmArgs>
            <hostedWebapp>war</hostedWebapp>
              <warSourceDirectory>${basedir}/war</warSourceDirectory>
               <webXml>${basedir}/war/WEB-INF/web.xml</webXml>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <phase>process-classes</phase>
                    <configuration>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1-beta-1</version>
            <configuration>
                <warSourceDirectory>${basedir}/war</warSourceDirectory>
                 <webXml>${basedir}/war/WEB-INF/web.xml</webXml>
                <!--<webXml>src/main/webapp/WEB-INF/web.xml</webXml>-->
                <containerConfigXML>war/WEB-INF/classes/context/context.xml</containerConfigXML>
                <warSourceExcludes>.gwt-tmp/**</warSourceExcludes>                                              
            </configuration>
        </plugin>

           <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>clean</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.4.2</version>
            <configuration>
                <argLine>-Xmx1024m</argLine>
                 <skipTests>${skipTest}</skipTests>
            </configuration>
        </plugin>
         <plugin>
            <artifactId>maven-clean-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <filesets>
                    <fileset>
                        <directory>war/module1</directory>
                    </fileset>

                    <fileset>
                        <directory>war/module2</directory>
                    </fileset>
                    <fileset>
                        <directory>war/WEB-INF/lib</directory>
                    </fileset>
                </filesets>
            </configuration>
        </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/resources</directory>               
            <excludes>
                <exclude>**/public/resources/**</exclude>
                <exclude>**/public/images/**</exclude>
            </excludes>             
            <filtering>true</filtering>
        </resource>
    </resources>
    <filters>
        <filter>src/main/resources/build/build-${env}.properties</filter>
    </filters>
</build>
<profiles>
    <profile>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <id>dev</id>
        <properties>
            <env>dev</env>
        </properties>
    </profile>


</profiles>
<reporting>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
        </plugin>
    </plugins>
</reporting>

Answer

Raghuram picture Raghuram · Dec 30, 2010

While I am unfamiliar with gwt based application using maven, maven war plugin allows adding of external web resources. You could add something similar to the below in the section of maven-war-plugin.

      <webResources>
        <resource>
          <directory>${project.build.directory}</directory>              
          <targetPath>war</targetPath>
          <includes>
            <include>module1/**</include>
            <include>module2/**</include>
          </includes>
        </resource>
      </webResources>