2013-05-05 111 views
8

iam将我的项目转换为maven。 我在war文件中看到没有可用的类文件。Maven没有编译类,在war文件中没有类文件

下面是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> 


项目结构

enter image description here

+1

downvoters请注明您所downvoting这样我就可以纠正自己什么 – developer 2013-05-05 07:48:34

回答

11

从我的观点你的项目结构上来看是没有行家的期望。

为了解决您的问题,请执行以下操作:

  1. 首先重命名你的包retail.web.mbeanmain.java.retail.web.mbean(后处理您的包将仍然命名为retail.web.mbean),这将创建maven所需的文件夹结构。
  2. 右键单击该项目,Maven>更新项目配置。

经过这个过程后,您将拥有与开始项目前相同的结构,但maven会知道在哪里可以找到源代码。

此外,您可以创建一个资源文件夹和文件夹的测试用以下结构:

Project 
    src 
    main 
     java 
     resources 
    test 
     java 
     resources 

这将是标准的Maven项目结构。

+0

请您可以检查这个问题太http://stackoverflow.com/q/16383877/668970 – developer 2013-05-05 11:15:19

14

默认情况下Maven认为Java源代码将在的src/main/java的但你的项目结构在SRC来源。我会建议你坚持standard Maven directory布局。

如果你不想这样做,那么你可以使用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> 
+0

当我输入我的Maven项目在eclipse它没有认识到它是一个动态Web项目,所以它不会生成这些类。当我在它生成的pom中添加了 ' $ {basedir}/src'',并且它工作正常。惊人 !! – Oliver 2015-04-17 12:28:10

+0

我的问题是java版本。我有1.8.101,并且必须更新到1.8.144,然后maven可以识别src/main/java – 2017-10-11 14:24:29

+0

提示中的源文件:对于测试目录,您可以添加自己的目录,例如: $ {basedir}/test 2018-02-15 08:47:30

-2

您可以使用代码中的pom.xml以下行包括在战争中的Java文件你已经创建。 默认情况下,打包时排除.java文件。

<resources> 
    <resource> 
    <directory>src</directory> 
    <includes> 
    <include>**/*.java</include> 
    </includes> 
    </resource> 
</resources> 
+0

只要你知道你的建议。那会放。目标/类中的java文件不是你想要的。你想先建立它们到.class文件。 – 2016-03-31 15:32:23