Java 在eclipse中开发maven web项目的困难

Java 在eclipse中开发maven web项目的困难,java,eclipse,maven,Java,Eclipse,Maven,我通过命令行程序创建了一个maven web项目。我的EclipseIndigo中安装了m2e,WTP,tomcat插件。我通过m2e插件将项目导入eclipse。 我在我的mavensettings.xml节点中添加了这些 <server> <id>tomcatserver</id> <username>admin</username> <password>adminadmi

我通过命令行程序创建了一个maven web项目。我的EclipseIndigo中安装了
m2e
WTP
tomcat
插件。我通过m2e插件将项目导入eclipse。
我在我的maven
settings.xml
节点中添加了这些

<server>
        <id>tomcatserver</id>
        <username>admin</username>
        <password>adminadmin</password>
</server>  
在我的
pom.xml

<tomcat-users>
<user name="admin" password="adminadmin" roles="admin-gui,manager-gui" />
</tomcat-users>  
<build>
    <finalName>FirstWebApp</finalName>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>tomcat-maven-plugin</artifactId>
            <configuration>
                     <server>tomcatserver</server>
                     <path>/FirstWebApp</path>
            </configuration>
        </plugin>
    </plugins>
  </build>  
Maven自己建造了这个项目。现在出现了在服务器上运行的
。当我运行应用程序时,它成功地运行了,但是index.jsp没有出现在我的
web.xml的
欢迎文件列表中

我的项目上出现了一个标有方框的红十字。当我单击Deployment Descriptor标题下的
错误页面时,它显示:

Resource '/FirstWebApp/WebContent/WEB-INF/web.xml' does not exist.  
实际上它并不存在,因为当我创建maven项目时,它就存在于

/src/main/webapp/WEB-INF/web.xml  
它仍然存在于那里。my index.jsp也存在于webapp目录中。
问题出在哪里?现在我对maven web项目的目录结构完全感到困惑。
有人能给我解释一下我的网络项目的目录结构吗。这是:

->src
    ->main
        resources
        ->webapp
            index.jsp
            ->WEB-INF
                web.xml
->target
    -> it's sub-directories
->WebContent
    ->META-INF
    ->WEB-INF
        lib
这让我头疼得厉害。请告诉我在eclipse中开发maven web项目的正确方法是什么

我应该把我的pojo、servlet和其他类放在这个结构的哪里


非常感谢

EclipseWTP使用了与maven不同的文件系统布局约定。例如,WTP希望您的jsp页面和配置在WebContent中,这可以更改,但需要对许多不同的项目属性设置进行更改

解决此问题的最快方法是从使用m2e的eclispe中创建一个maven web项目,这样您将获得一个为maven和eclipse正确配置的wtp项目。然后,我会将您的代码复制到新项目的适当位置。任何你想放在web内容中的东西,只要你想放在src/main/webapp中,java代码就会放在src/main/java中。阅读maven目录约定是一个好主意

为了让maven和eclipse更好地发挥作用,您需要理解的基本概念是,eclipse和maven都将尝试负责您的项目配置,这将导致问题。因此,您希望使用maven作为maven可以设置的所有项目设置的源,例如,maven可以告诉eclipse项目是否是动态web模块,以及要使用的java编译器级别。。。因此,对于maven可以配置的设置,请使用maven。对于maven无法配置的设置,如eclipse源代码格式化程序,请使用eclipse项目属性来设置这些设置

WTP和maven之间的另一个大区别是,WTP希望您配置一个服务器,并且对于每个项目,它假设项目有一个目标运行时,这样就可以解决servlets api之类的问题。另一方面,Maven期望您的项目应该编译并构建独立于您将在其上运行的应用程序服务器,因此它期望您对Maven中心的api JAR(如servlet api、jsp api JAR等)建立依赖关系。。。等,并希望标记提供的范围。比如说

<dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <scope>provided</scope>
        <version>2.2.1</version>
</dependency>

javax.servlet.jsp
javax.servlet.jsp-api
假如
2.2.1

EclipseWTP使用与maven不同的文件系统布局约定。例如,WTP希望您的jsp页面和配置在WebContent中,这可以更改,但需要对许多不同的项目属性设置进行更改

解决此问题的最快方法是从使用m2e的eclispe中创建一个maven web项目,这样您将获得一个为maven和eclipse正确配置的wtp项目。然后,我会将您的代码复制到新项目的适当位置。任何你想放在web内容中的东西,只要你想放在src/main/webapp中,java代码就会放在src/main/java中。阅读maven目录约定是一个好主意

为了让maven和eclipse更好地发挥作用,您需要理解的基本概念是,eclipse和maven都将尝试负责您的项目配置,这将导致问题。因此,您希望使用maven作为maven可以设置的所有项目设置的源,例如,maven可以告诉eclipse项目是否是动态web模块,以及要使用的java编译器级别。。。因此,对于maven可以配置的设置,请使用maven。对于maven无法配置的设置,如eclipse源代码格式化程序,请使用eclipse项目属性来设置这些设置

WTP和maven之间的另一个大区别是,WTP希望您配置一个服务器,并且对于每个项目,它假设项目有一个目标运行时,这样就可以解决servlets api之类的问题。另一方面,Maven期望您的项目应该编译并构建独立于您将在其上运行的应用程序服务器,因此它期望您对Maven中心的api JAR(如servlet api、jsp api JAR等)建立依赖关系。。。等,并希望标记提供的范围。比如说

<dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <scope>provided</scope>
        <version>2.2.1</version>
</dependency>

javax.servlet.jsp
javax.servlet.jsp-api
假如
2.2.1

如果您使用的是较新的Eclipse版本(Indigo或Juno),您可能还应该安装
m2e wtp
插件。它将连接Maven配置和WTP期望项目布局的方式


这个问题看起来与您试图做的类似,它更详细地解释了如何设置项目结构:

如果您使用的是最新的Eclipse版本(Indigo或Juno),您可能还应该安装
m2e wtp
插件。它将在两个地方之间架起一座桥梁