mavenmaven-war-pluginmaven-ear-plugin

WEB-INF/classes empty upon MavenBuild


I am building a multi modules project the hierarchy for it as follow :

ParentProject
             |_ WebModule
                        |_src
                            |_main
                                  |_ java
                                  |       |_Some packages here 
                       |_webapp  
             |_EARModule                 
             |_ EJBModule
             |_ JARModule

Mvn clean install command is working perfectly fine and i can find the generated EAR file. Inside the EAR i can see the EJB module and the JAR module are created and compiled as well, but for the web module the WAR is created with correct structure but the class directory is empty !

I am using Maven2 and JAVA7

the parent POM is :

  <?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>XXXX</groupId>
    <artifactId>parentModule</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <modules>
        <module>EJBModule</module>
        <module>EARModule</module>
        <module>JARModule</module>
        <module>WEBModule</module>
    </modules>

    <properties>
            <maven.compiler.source>1.6</maven.compiler.source>
            <maven.compiler.target>1.6</maven.compiler.target>
    </properties>
    <dependencyManagement>

        <dependencies>

            <!--Project dependencies-->

        </dependencies>

    </dependencyManagement>
    <build>
    <pluginManagement>
        <plugins>
            <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                       <artifactId>maven-compiler-plugin</artifactId>
                         <version>3.0</version>
                          <configuration>
                                <source>${maven.compiler.source}</source>
                                <target>${maven.compiler.target}</target>
                              </configuration>
                        </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-ear-plugin</artifactId>
                <version>2.9.1</version>
            </plugin>
            <plugin>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.4</version>
            </plugin>
        </plugins>
    </pluginManagement>

     </build>

     </project>

EAR POM :

<?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/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>ParentModule</artifactId>
        <groupId>XXXX</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
<packaging>ear</packaging>
    <artifactId>EARModule</artifactId>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <version>3.0.1</version>
                <configuration>

                    <modules>

                        <webModule>
                            <groupId>XXXX</groupId>
                            <artifactId>WebModule</artifactId>
                            <bundleFileName>abc.war</bundleFileName>
                            <contextRoot>/abc</contextRoot>
                        </webModule>
                        <ejbModule>
                            <groupId>XXXX</groupId>
                            <artifactId>EJBModule</artifactId>
                            <bundleFileName>ejbModule.jar</bundleFileName>
                        </ejbModule>
                    </modules>
                    <displayName>theEar</displayName>
                    <generateApplicationXml>true</generateApplicationXml>
                </configuration>
            </plugin>
        </plugins>
    </build>  
    <dependencies>
        <!--some dependencies-->
    </dependencies>

    </project>

WEB app POM :

    <?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/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>parentModule</artifactId>
        <groupId>XXXX</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>WebModule</artifactId>
    <packaging>war</packaging>

    <name>abc</name>


    <dependencies>
       <!-- some dependencies -->
    </dependencies>
    </project>

Note : These pom files are samples to demonstrate my case.


Solution

  • The problem was not in the POM files. the actual issue is that i copied source code under src/main/java directory but it was having some compilation issues.

    I am using IntelliJ IDE, unfortunately, IntelliJ is not notifying me after copying the source code (even after synchronize the project). So what i did is just right click on the web module then clicked on Build module <'module name'> which shows the compilation error. After rectifying the issues then run mvn clean install I could find the classes get generated in the war.

    I hope this help somebody