哇,一下子有很多问题。我承认使用 Maven 和 Eclipse 设置一个 webapp 项目可能很棘手,所以我会尝试回答所有这些问题。
使用 Maven 创建 Web 应用程序项目
如何使用servlets jsp创建Java Web项目,并使用maven创建其他类?它创建了一个简单的目录结构,src->main->java。
创建 Java Web 项目时,最终产品应该是 WAR 或 EAR 文件。WAR 和 EAR 文件是具有特定结构的 JAR 文件,可以部署在应用程序服务器或 servlet 容器中。
如前所述,为Web应用程序设置Maven项目的最简单方法是使用原型:
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
如果我们使用此原型创建一个项目,则会生成一个简单的目录结构和pom.xml。此项目遵循您提到的标准 Maven 目录布局,带有 、 等。Maven 从此结构生成 WAR 文件,其中包含 war:war 目标。/src/main/java/
/src/test/java
请注意,此原型适用于非常简单(过时)的 Web 应用程序,但它是可用的最佳起点。您可能希望放弃 web.xml文件,并创建一个支持 Servlet 3.0 的新文件。
WEB-INF 位置
我在哪里以及如何放置 Web-inf 文件夹?
默认情况下,Maven 希望应位于 WAR 文件根目录中的资源(如图像、html 页面和 WEB-INF 目录)驻留在 .因此,WEB-INF 文件夹应位于 /src/main/webapp/WEB-INF/
。如果使用 maven-原型-webapp,则会自动创建此目录以及示例 web.xml文件。/src/main/webapp/
Eclipse 集成
您在问题标题中提到了Eclipse,并且确实可以使用m2eclipse插件在Eclipse中开发Mavenized Web应用程序。Eclipse通过WTP(Web Tools Platform)对Web应用程序有很好的支持。
尽管互联网上的许多指南(错误地)推荐它,但您不应该使用mvn eclipse:eclipse命令来创建Eclipse项目。此插件只能为非常旧的 Eclipse 版本生成 WTP 项目(WTP 2.0 是最大值)。相反,请使用 m2eclipse 插件,如此处所述。
依赖
我是否需要手动将 jdbc 驱动程序添加到 web-inf/lib 内的文件夹中,或者仅仅指出依赖项就可以了吗?
无需手动执行此操作,因为 Maven 的主要优势之一是依赖关系管理。如果在具有编译或运行时作用域的 pom.xml中添加依赖项,则 JAR 文件将自动包含在 WAR 文件的目录中。例如,要添加Postgresql JDBC驱动程序依赖项,请将以下内容添加到您的pom.xml:WEB-INF/lib/
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
由于范围未指定,Maven 将假定它位于默认范围编译中。结果是Maven将包含在WAR文件中。WEB-INF/lib/postgresql-9.1-901.jdbc4.jar
测试
有没有办法用 junit 测试 servlet?
这个问题已经在Stackoverflow上被问到(并回答了):
引用