从ASP.NET背景来看,我发现使用Eclipse WTP和Maven运行webapp需要花费多少工作,尤其是在您自己学习的情况下。希望这本快速入门指南能帮助别人快速起步。
有两种方法可以使用Maven在Eclipse WTP中使用Hello World项目。您可以创建一个动态Web项目,然后添加Maven自然,或者您可以做相反的事情。
先决条件为Eclipse与更新站点
启动配置
选项1:创建动态Web项目再加入Maven的自然
创建新的Maven项目,选择原型 org.apache.maven.archetypes :maven-archetype-webapp
更改为Java EE透视图。
创建一个新的源文件夹,src \ main \ java。注意Eclipse如何不够智能为您做这件事,并且文件夹的排序也不正确。 src \ main \ java文件夹在src \ main \ resources之后列出。这可以稍后在项目属性中手动修复。
创建一个新的servlet。注意Eclipse如何将这个文件默认为错误的文件夹src \ main \ resources,因为顺序是错误的。相反,请手动选择src \ main \ java。 将向导的第二页上的URL映射更改为/ *以使测试更容易。
现在我们的servlet已经准备就绪,但servlet api的依赖关系没有绑定。 A)我们可以将servlet api作为依赖添加到我们的项目中,或者B)我们可以绑定到Apache 7.0的Eclipse服务器配置。
对于选项A,添加这种依赖到POM:
。
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-api</artifactId>
<version>7.0.${set this}</version>
<scope>provided</scope>
</dependency>
测试发布:
。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println("The time is now: " + new DateTime().toString());
}
重新加载测试页,输出,现在应该是:
现在时间是:2012-03-03T14:14:29.890-05:00
现在,如果你想使用Servlet 3.0和注释这是默认情况下不启用,为什么我不知道的原因。 首先强制Maven通过将这个添加到你的pom来使用Java 1.6,否则每次你更新你的pom时,配置都会恢复到Java 1.5。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
打开项目属性 - >项目构面。将“动态Web模块”下的版本更改为3.0,更改java版本1.6
在src \ main \ java中创建一个类名为AnnotatedServlet的新Servlet,并注意如何自动创建@WebServlet注释。
选项2:创建动态Web项目再加入Maven的自然
- 选择Tomcat的运行系统和动态模块3.0版
- 创建源文件夹的src \主\ java中
- 设置默认输出目标\类
- 设置上下文目录src \ main \ webapp
- 检查生成web.xml
- 创建映射/ *快速检测
- 的servlet添加输出语句doGet方法
response.getWriter().println("Another test");
。
<dependencies>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
谢谢你的提示,这是正确配置,但不工作。最终我发现从头开始创建一个新项目的工作。在这种情况下,我创建了该项目,然后添加了Maven WTP连接器,但未正确配置该项目。 – dcompiled 2012-03-03 21:52:35
我有一点点不同的问题,但是这固定了它。我正在使用Maven构建其中包含SNAPSHOTS的项目。我最初启用了Workspace Resolution,并将其关闭。 Eclipse被配置为仍然使用本地项目,而不是来自我们的nexus回购的快照。我不断收到中国国家农业科学院,发现这表明它仍然试图解决它而不是发布它的问题。 – bh5k 2012-10-03 16:46:55
这帮了我很多忙,在另一种情况下:)(类似) – Alex 2013-03-30 19:42:58