Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maven not compiling class and there is no class files in war file

Tags:

java

maven-2

iam converting my project to maven. I see in war file there is no class file available.

Below is the pom.xml and project structure.

<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>RetailProducts</groupId>
  <artifactId>RetailProducts</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>RetailProducts</name>

  <dependencies>

        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.1.7</version>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>2.1.7</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
        </dependency>
                <!-- Tomcat 6 need this -->
        <dependency>
            <groupId>com.sun.el</groupId>
            <artifactId>el-ri</artifactId>
            <version>1.0</version>
        </dependency>

    </dependencies>

    <build>
        <finalName>JavaServerFaces</finalName>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.1.1</version>
      <!-- <configuration> section added to pick up the WEB-INF/web.xml inside WebContent -->
      <configuration>
         <webResources>
            <resource>
               <directory>WebContent</directory>
            </resource>
         </webResources>
      </configuration>
   </plugin>
        </plugins>
    </build>
</project>


Project structure

enter image description here

like image 933
developer Avatar asked May 05 '13 07:05

developer


2 Answers

From my point of view your project structure isn't as maven expects.

In order to solve your problem do the following:

  1. First rename your package retail.web.mbean to main.java.retail.web.mbean (after the process your package will be still named retail.web.mbean), this will create the folder structure necessary for maven.
  2. Right click on the project, Maven > Update Project Configuration.

After this process you will have the same structure you had before starting the project but maven will know where to find the source code.

Additionally, you can create a resource folder and test folders with the following structure:

Project
  src
    main
      java
      resources
    test
      java
      resources

This would be the standard maven project structure.

like image 192
Francisco Spaeth Avatar answered Nov 09 '22 12:11

Francisco Spaeth


By default Maven expects the Java sources to be in src/main/java but your project structure has the sources in src. I would recommend that to you adhere to the standard Maven directory layout.

If you don't want to do that then you can use the sourceDirectory build setting as should below:

<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">
  ...
  <build>
    <sourceDirectory>${basedir}/src</sourceDirectory>
  </build>
</project>
like image 35
Brian Matthews Avatar answered Nov 09 '22 12:11

Brian Matthews