我正在尝试使用Eclipse Indigo和Tomcat服务器建立一个基本的hello world项目。我用一个简单的servlet创建了一个动态项目。测试了servlet并且工作正常。然后我启用了Maven支持并添加了logback到我的pom。我在servlet的doGet
方法中添加了一个日志语句。运行servlet时,它会抱怨它找不到任何绑定,因为没有将logback jar复制到Eclipse tomcat实例中。我希望在这里的某处发现罐子:
${workspace}\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\
如何让Eclipse正常使用WTP / Maven?我也试过安装m2e-wtp连接器没有区别。
答案 0 :(得分:51)
检查部署程序集(项目上下文菜单),必须有映射 Maven Dependencies - > WEB-INF / lib中强>
答案 1 :(得分:13)
来自ASP.NET背景,我发现使用Eclipse WTP和Maven运行webapp需要花费多少工作,特别是如果你自己学习的话。希望这个快速入门指南能帮助其他人快速上手。
有两种方法可以使用Maven在Eclipse WTP中运行hello world项目。您可以创建一个动态Web项目,然后添加Maven性质,或者您可以执行相反的操作。
具有更新站点的Eclipse的先决条件
“Web,XML,Java EE和OSGi企业开发”
http://download.eclipse.org/releases/indigo
“Eclipse的Maven集成”
http://download.jboss.org/jbosstools/updates/m2eclipse-wtp/
“WTP的Maven集成”
http://download.jboss.org/jbosstools/updates/m2eclipse-wtp/
启动配置
窗口 - >偏好 - >服务器 - >运行时环境
选项1:创建动态Web项目,然后添加Maven Nature
创建新的Maven项目,选择原型 org.apache.maven.archetypes:行家-原型-web应用
更改为Java EE透视图。
创建一个新的源文件夹 src \ main \ java 。请注意Eclipse不够智能,无法为您执行此操作,并且文件夹的顺序也不正确。 在 src \ main \ resources 之后列出 src \ main \ java 文件夹。这可以稍后在项目属性中手动修复。
创建一个新的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>
对于选项B:
空白页面应该出现在内部浏览器中,例如http://localhost:8080/ $ {artifact}
依赖性发布测试:
将joda-time添加到pom。
在先前为doGet方法创建的servlet中添加此行并导入必要的依赖项:
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和注释,默认情况下不会启用此功能,原因我不知道。 首先通过将Java 1.6添加到您的pom来强制Maven使用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>
打开项目属性 - &gt;项目方面。将“Dynamic Web Module”下的Version更改为3.0,更改java版本1.6
在src \ main \ java中创建一个名为AnnotatedServlet的新Servlet,并注意如何自动创建@WebServlet注释。
选项2:创建动态Web项目,然后添加Maven Nature
response.getWriter().println("Another test");
双击“部署描述符”并将此属性添加到根网站应用程序元素metadata-complete="false"
右键单击项目并选择Run As - &gt;在服务器上运行
<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>
答案 2 :(得分:1)
在Project Explorer中右键单击Web项目,然后选择Maven - &gt;更新项目
答案 3 :(得分:0)
我遇到了类似的问题,虽然我已经正确配置了部署程序集,但它仍然无效。然后我发现在Window下 - &gt;偏好 - &gt;我的日食 - &gt; Java企业项目 - &gt; Web项目,在“部署”选项卡下,“从属项目”的管理已关闭。我将其更改为将依赖项目的jar部署到lib文件夹,然后一切都像魅力一样。我甚至可以关闭Deployment Assembly选项。