问题
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

回答1:
From my point of view your project structure isn't as maven expects.
In order to solve your problem do the following:
- 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.
- 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.
回答2:
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>
回答3:
You can use the following lines of code in POM.xml to include java files in war that you have created. Bydefault war exclude .java files while packaging.
<resources>
<resource>
<directory>src</directory>
<includes>
<include>**/*.java</include>
</includes>
</resource>
</resources>
来源:https://stackoverflow.com/questions/16382461/maven-not-compiling-class-and-there-is-no-class-files-in-war-file