Java Dynamic Web project with Maven and Eclipse

2022-09-01 12:27:25

关于使用 Maven 和 Eclipse 创建 Java Web 应用程序,我有几个问题:

  • 如何使用 Maven 创建包含 servlet、jsp 和其他类的 Java Web 项目?
  • 它创建了一个简单的目录结构,src->main->java。我在哪里以及如何放置 Web-inf 文件夹?
  • 我是否需要手动将 jdbc 驱动程序添加到 web-inf/lib 内的文件夹中,或者仅仅指出依赖项就可以了吗?
  • 有没有办法用 junit 测试 servlet?

答案 1

哇,一下子有很多问题。我承认使用 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上被问到(并回答了):

引用


答案 2

您应该基于 webapp Maven 原型创建一个项目,而不是您正在使用的默认原型。

我正在使用SpringSource工具套件,在本练习中,它与带有m2e的Eclipse相同。创建一个新的 Maven 项目,并确保选择以下原型:

enter image description here

Maven 的命令行方法是:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp

此原型将 WEB-INF 文件夹放在正确的位置(在 src/main/webapp 下)。

您可以在 http://maven.apache.org/guides/mini/guide-webapp.html


推荐