使用Maven和Eclipse的Java Dynamic Web项目

Art*_*lev 28 java eclipse junit java-ee maven

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

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

小智 66

哇这一刻有很多问题.我承认用Maven和Eclipse建立一个webapp项目可能很棘手,所以我会尽力回答它们.

使用Maven创建Web应用程序项目

如何使用maven创建一个带有servlet jsp和其他类的java web项目?它创建了一个简单的目录结构,src-> main-> java.

在创建Java Web项目时,最终产品应该是WAR或EAR文件.WAR和EAR文件是具有特定结构的JAR文件,可以部署在应用程序服务器或servlet容器中.

如上所述,为Web应用程序设置Maven项目的最简单方法是使用原型:

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
Run Code Online (Sandbox Code Playgroud)

如果我们使用此原型创建项目,则会生成一个简单的目录结构和pom.xml.这个项目遵循你提到的标准Maven目录布局,使用/src/main/java/,/src/test/java等等.Maven使用war:war目标从这个结构生成WAR文件.

请注意,此原型适用于非常简单(过时)的Web应用程序,但它是最佳可用起点.您可能想要丢弃web.xml文件并创建一个支持Servlet 3.0的新文件.

WEB-INF位置

我在哪里以及如何放置web-inf文件夹?

默认情况下,Maven期望驻留在WAR文件根目录中的资源(例如images,html页面和WEB-INF目录)驻留在其中/src/main/webapp/.所以WEB-INF文件夹应该位于/src/main/webapp/WEB-INF/.如果使用maven-archetype-webapp,则会自动创建此目录以及示例web.xml文件.

Eclipse集成

您在问题标题中提到了Eclipse,并且确实可以使用m2eclipse插件在Eclipse中开发Mavenized Web应用程序.Eclipse通过WTP(Web Tools Platform)对Web应用程序提供了很好的支持.

虽然互联网上有许多指南(错误地)推荐它,但你不应该使用mvn eclipse:eclipse命令来创建Eclipse项目.这个插件只能为很老的Eclipse版本生成WTP项目(WTP 2.0是最大的).相反,请使用此处所述的m2eclipse插件.

依赖

我是否需要手动将jdbc-drivers添加到web-inf/lib中的文件夹中,或者只是指出依赖项?

没有必要手动执行此操作,因为Maven的关键优势之一是依赖关系管理.如果在pom.xml中添加具有编译运行时范围的依赖项,则JAR文件将自动包含在WEB-INF/lib/WAR文件的目录中.例如,要添加Postgresql JDBC驱动程序依赖项,请将其添加到pom.xml:

<dependency>
    <groupId>postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.1-901.jdbc4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

由于范围未指定,Maven将假定它处于默认范围编译中.结果是Maven将包含WEB-INF/lib/postgresql-9.1-901.jdbc4.jar在WAR文件中.

测试

有没有办法用junit测试servlet?

Stackoverflow已经询问(并回答)了这个问题:

参考


Jon*_*n W 10

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

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

在此输入图像描述

Maven的命令行方式是:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp
Run Code Online (Sandbox Code Playgroud)

这个原型将把WEB-INF文件夹放在正确的位置(在src/main/webapp下).

您可以在http://maven.apache.org/guides/mini/guide-webapp.html上找到更多信息


And*_*Dev 8

只需创建一个普通的"动态Web项目".然后右键单击项目名称并选择Configure> Convert To Maven Project.完成转换可能需要一到一分钟,所以请耐心等待.请参阅以下文章:

http://aykutakin.wordpress.com/2013/12/04/create-eclipse-dynamic-web-project-with-maven-2/

如果这不起作用,试试这个:

http://crunchify.com/how-to-create-dynamic-web-project-using-maven-in-eclipse/