Java Maven没有编译类并且war文件中没有类文件
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16382461/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Maven not compiling class and there is no class files in war file
提问by developer
iam converting my project to maven. I see in war file there is no class file available.
我正在将我的项目转换为 maven。我在war文件中看到没有可用的类文件。
Below is the pom.xml and project structure.
下面是 pom.xml 和项目结构。
<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
项目结构
采纳答案by Francisco Spaeth
From my point of view your project structure isn't as maven expects.
从我的角度来看,您的项目结构并不像 maven 所期望的那样。
In order to solve your problem do the following:
为了解决您的问题,请执行以下操作:
- First rename your package retail.web.mbeanto 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.
- 首先将您的包retail.web.mbean重命名为main.java.retail.web.mbean(在此过程之后您的包仍将命名为retail.web.mbean),这将创建maven 所需的文件夹结构。
- 右键单击项目,Maven > 更新项目配置。
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.
在此过程之后,您将拥有与启动项目之前相同的结构,但 maven 将知道在哪里可以找到源代码。
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.
这将是标准的 Maven 项目结构。
回答by Brian Matthews
By default Maven expects the Java sources to be in src/main/javabut your project structure has the sources in src. I would recommend that to you adhere to the standard Maven directorylayout.
默认情况下,Maven 期望 Java 源代码位于src/main/java 中,但您的项目结构的源代码位于src 中。我建议您遵守标准的 Maven 目录布局。
If you don't want to do that then you can use the sourceDirectorybuild setting as should below:
如果您不想这样做,那么您可以使用sourceDirectory构建设置,如下所示:
<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>
回答by Jitender
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.
您可以使用 POM.xml 中的以下代码行在您创建的 war 中包含 java 文件。默认情况下,打包时会排除 .java 文件。
<resources>
<resource>
<directory>src</directory>
<includes>
<include>**/*.java</include>
</includes>
</resource>
</resources>