关于使用Maven和Eclipse创建Java Web应用程序,我有几个问题:
哇,这一下子就有很多问题了。我承认使用Maven和Eclipse设置webapp项目可能会很棘手,所以我将尝试全部回答它们。
如何使用servlets、jsp和Maven的其他类创建java web项目?它创建了一个简单的目录结构,src->main->java。
在创建Java web项目时,最终产品应该是WAR或EAR文件。WAR和EAR文件是具有特定结构的JAR文件,可以部署在应用程序服务器或servlet容器中。
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
如果我们用这个原型创建一个项目,那么就会生成一个简单的目录结构和pom.xml。这个项目遵循您提到的标准Maven目录布局,包括/src/main/java/
、/src/test/java
等。Maven使用WAR:WAR目标从这个结构生成WAR文件。
注意,这个原型用于一个非常简单的(过时的)web应用程序,但它是可用的最佳起点。您可能希望丢弃web.xml文件,并创建一个支持Servlet3.0的新文件。
我如何将web-inf文件夹放在哪里?
默认情况下,Maven希望应该放在WAR文件根目录中的资源--例如图像、html页面和WEB-INF目录--驻留在/src/main/webapp/
中。因此WEB-INF文件夹应该位于/src/main/webapp/WEB-INF/
。如果您使用maven-archetype-webapp,则会自动创建此目录以及示例web.xml文件。
您在问题标题中提到了Eclipse,并且确实可以使用m2eclipse插件在Eclipse中开发Mavenized web应用程序。Eclipse通过WTP(Web Tools Platform)对Web应用程序提供了良好的支持。
尽管internet上的许多指南(错误地)推荐它,但您不应该使用mvn Eclipse:Eclipse命令来创建Eclipse项目。这个插件只能为非常老的Eclipse版本生成WTP项目(WTP 2.0是最大版本)。相反,使用这里描述的m2eclipse插件。
我需要手动将jdbc-drivers添加到web-inf/lib中的文件夹中吗?还是只需要指出依赖关系就可以了?
不需要手动执行此操作,因为Maven的关键优势之一是依赖关系管理。如果您在pom.xml中添加一个范围为compile或runtime的依赖项,那么JAR文件将自动包含在WAR文件的web-inf/lib/
目录中。例如,要添加Postgresql JDBC驱动程序依赖项,请将此添加到pom.xml:
<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上提出(并得到了回答):
问题内容: 关于使用Maven和Eclipse创建Java Web应用程序,我有几个问题: 如何使用Maven创建带有servlet,jsp和其他类的Java Web项目? 它创建一个简单的目录结构,src-> main-> java。我在哪里以及如何放置web-inf文件夹? 我是否需要将jdbc-drivers手动添加到web-inf / lib内的文件夹中,还是可以指出依赖项? 有没有办法用
问题内容: 摘要 在Eclipse中,当我“ Maven->更新项目配置”时,“ Maven依赖关系”从项目的“部署程序集”中删除。 细节 我从一个预先配置的Eclipse项目开始:File-> New-> Dynamic Web Project-> JavaServer Face v2.0 Project。为了删除“魔术”,然后将其转换为Maven项目:配置->转换为Maven项目。 pom.x
为了实现这一点,我遵循了简单的步骤。将Tomcat和Maven与eclipse集成。1.打开eclipse。新的-
问题内容: 我的问题是,即使将“ Deployment Assembly”设置为包括maven依赖项,这也导致找不到我的类,我也不知道该怎么办。 我只是注意到该类,因为其他类似乎已包含在我的软件包中。 我的文件pom.xml 我的文件web.xml 问题答案: 出现此问题的原因可能是: 某些库版本不匹配(例如,要编译的Java版本!= Web应用程序服务器上的Java版本)。 部署期间不包括必需的
通过右键单击项目并选择“配置”,我将一个动态web项目转换为一个maven项目- 然后,右键点击项目- 现在所有的JAR和类都可以在Maven依赖项部分中找到。下面是我的项目结构截图。 项目结构 下面是maven dependency部分的屏幕截图。 Maven依赖项部分 但是,我无法导入任何包或类形式的依赖jars到我的任何Java类(例如:HttpServices.java)在src文件夹中。
看起来好像什么都没有出问题,但我一定是错过了什么,因为我总是收到这个错误。 下面是my.settings/org.eclipse.wst.common.project.facet.core.xml的内容 在我试图压制这个看似不相关的错误消息时,任何帮助都非常感谢。 编辑:添加了pom.xml内容