使用Maven和Eclipse的Java Dynamic Web项目

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

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

哇,这是很多问题。 我承认用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 

如果我们使用此原型创建项目,则会生成一个简单的目录结构和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文件将自动包含在WAR文件的WEB-INF/lib/目录中。 例如,要添加Postgresql JDBC驱动程序依赖项,请将其添加到pom.xml:

  postgresql postgresql 9.1-901.jdbc4  

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

测试

有没有办法用junit测试servlet?

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

  • unit testingJava servlet
  • unit testingservlet

参考

  • Hello World与JSF 2.0,Glassfish 3,Maven,SVN和Eclipse。

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

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

在此处输入图像描述

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上找到更多信息

只需创建一个普通的“动态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/

  • 第1步:创建您的Web应用程序文件夹。
  • 第2步:在命令提示符下移动到该文件夹​​。
  • 第3步:使用以下命令:

mvn archetype:generate -DgroupId = com.helloworld -DartifactId = HelloWorldDemo -DarchetypeArtifactId = maven-archetype-webapp -DinteractiveMode = false

DarchetypeArtifactId = maven-archetype-webapp将创建一个maven web项目。

  • 第4步:现在在命令提示符下进入项目文件夹并使用此命令: mvn eclipse:eclipse -Dwtpversion=2.0使您的项目成为eclipse的动态Web项目,现在将这个新创建的项目作为“ 现有项目 ”导入

使用eclipse的m2eclipse插件在eclipe中启用MAVEN。

Web.xml将位于\ src \ main \ webapp \ WEB-INF