Eclipse WTP不发布Maven依赖项

时间:2012-03-02 23:22:52

标签: eclipse tomcat maven m2eclipse eclipse-wtp

我正在尝试使用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连接器没有区别。

4 个答案:

答案 0 :(得分:51)

检查部署程序集(项目上下文菜单),必须有映射 Maven Dependencies - > WEB-INF / lib中

答案 1 :(得分:13)

来自ASP.NET背景,我发现使用Eclipse WTP和Maven运行webapp需要花费多少工作,特别是如果你自己学习的话。希望这个快速入门指南能帮助其他人快速上手。

有两种方法可以使用Maven在Eclipse WTP中运行hello world项目。您可以创建一个动态Web项目,然后添加Maven性质,或者您可以执行相反的操作。

具有更新站点的Eclipse的先决条件

启动配置

选项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:

    • 项目属性 - &gt; Java构建路径 - &gt;图书馆 - &gt;添加库 - &gt;服务器运行时 - &gt; Apache Tomcat 7.0
    • 右键单击并在服务器上运行:
  • 空白页面应该出现在内部浏览器中,例如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

  • 选择Tomcat Runtime和Dynamic Module Version 3.0
  • 创建源文件夹src \ main \ java
  • 设置默认输出目标\类
  • 设置上下文目录src \ main \ webapp
  • 检查生成web.xml
  • 使用映射/ *创建servlet以进行快速测试
  • 将输出语句添加到doGet方法

response.getWriter().println("Another test");

  • 双击“部署描述符”并将此属性添加到根网站应用程序元素metadata-complete="false"

  • 右键单击项目并选择Run As - &gt;在服务器上运行

  • 右键单击项目 - &gt;配置 - &gt;转换为Maven项目
  • 选择包装为战争
  • 编辑pom并将编译器设置为使用java 1.6并添加joda-time依赖:

<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选项。