2

我通过命令行程序创建了一个 Maven Web 项目。我的 Eclipse Indigo 中安装了m2e, WTP,tomcat插件。我通过m2e插件将项目导入eclipse。
我在我的 Mavensettings.xml内部<servers>节点 中添加了这些

<server>
        <id>tomcatserver</id>
        <username>admin</username>
        <password>adminadmin</password>
</server>  

在我的tomcat-users.xml我有

<tomcat-users>
<user name="admin" password="adminadmin" roles="admin-gui,manager-gui" />
</tomcat-users>  

在我的pom.xml我有

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

现在右键单击我的项目-> Run as -> Maven build

现在它没有用。即在 Run as -> Run on Server 选项下没有出现。所以我

right click on project -> properties -> project facets -> selected Dynamic web module, java, javascript

Maven 自己构建了项目。现在Run on Server出现了。当我运行应用程序时,它成功运行,但 index.jsp 没有出现在我welcome-file-listweb.xml.

我的项目上出现了一个红十字标记的正方形。Error Pages当我在部署描述符标题下 单击时,它说:

Resource '/FirstWebApp/WebContent/WEB-INF/web.xml' does not exist.  

实际上它不存在,因为当我创建 maven 项目时它存在于

/src/main/webapp/WEB-INF/web.xml  

它仍然存在。我的 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 和其他类放在这个结构中的什么位置

多谢

4

2 回答 2

2

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

解决此问题的最快方法是从 eclispe 中创建一个使用 m2e 的 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 中心事物(如 servlet api、jsp api jars、.. . 等等,它期望那些被标记为提供的范围。例如。

<dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <scope>provided</scope>
        <version>2.2.1</version>
</dependency>
于 2013-02-16T16:00:09.133 回答
2

如果您使用的是较新的 Eclipse 版本之一(Indigo 或 Juno),您可能也应该安装该m2e-wtp插件。它将在 Maven 配置和 WTP 期望项目布局的方式之间架起一座桥梁。

http://www.eclipse.org/m2e-wtp/

这个问题看起来与您尝试做的类似,它更详细地解释了如何设置项目结构:Maven/Tomcat Projects In Eclipse Indigo/3.7

于 2013-02-17T10:50:44.690 回答