[英]Maven sees dependent project jar from Eclipse but not from the command line
[英]How to create a maven project which will work in eclipse and from command line
我有任何问题:
哇,一次有很多问题。 我承认,使用Maven和Eclipse设置Webapp项目可能很棘手,因此我将尽力回答所有这些问题。
如何使用servlets jsp和maven创建其他类的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文件夹?
默认情况下,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工具平台)对Web应用程序提供了良好的支持。
尽管Internet上有许多指南(错误地)都推荐这样做,但是您不应使用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中:
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
由于范围是未指定的,因此Maven将假定它在默认范围compile中 。 结果是Maven将在WAR文件中包含WEB-INF/lib/postgresql-9.1-901.jdbc4.jar
。
有没有办法用junit测试servlet?
在Stackoverflow上已问(并回答)了这个问题:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.