【问题标题】:Eclipse + Tomcat = wrong docBase?Eclipse + Tomcat = 错误的文档库?
【发布时间】:2010-12-15 01:36:58
【问题描述】:

我正在使用 Tomcat 6.0.18 运行 Eclipse Galileo。

目前,我有一个安装了 m2Eclipse 插件的工作应用程序。它部署到 Tomcat,我可以测试我的应用程序。

我想切换到只使用 Maven Eclipse 插件。问题是 Tomcat 拒绝部署我的应用程序。

我已将我的 web 项目转换为动态 web 模块,并将所有构建路径设置为尽可能接近我以前的 m2Eclipse 工作区,但仍然没有成功。当我点击 url 时,我只是得到一个空白页。

我所做的缩小范围是在我的 m2Eclipse 工作区中,当 Tomcat 发布 Web 项目时,[TOMCAT_HOME]\conf\Catalina\localhost 中的 context.xml 文件将 docBase 设置为“Web Content”目录。在我的 Maven Eclipse 工作区中,Tomcat 发布的 context.xml 将 docBase 设置为“Java Source”目录。

我需要做什么才能让与 Tomcat 集成的“Maven Eclipse”工作区像我的 m2Eclipse 工作区一样成功工作?

【问题讨论】:

    标签: eclipse tomcat maven-2 context.xml


    【解决方案1】:

    如果您手动将项目转换为动态 Web 模块,则说明您没有正确配置 maven-eclipse-plugin。

    根据 maven-eclipse-plugin documentation,您需要在您的 pom 中为 WTP 项目指定额外的配置(或通过传递 -D 参数)。关键是<wtpversion>标签。

         <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <configuration>
                        <projectNameTemplate>[artifactId]-[version]</projectNameTemplate>
                        <wtpmanifest>true</wtpmanifest>
                        <wtpapplicationxml>true</wtpapplicationxml>
                        <wtpversion>2.0</wtpversion>
                        <manifest>${basedir}/src/main/resources/META-INF/MANIFEST.MF</manifest>
                </configuration>
        </plugin>
    

    【讨论】:

    • 嗯。当我运行 eclipse 目标时,它说不支持 2.0 版。只有 1.0 和 R5。
    • 在 maven-eclipse-plugin 的 2.5 版中引入了对 WTP 2.0 的支持。所以你需要指定更新的版本或使用 -up(更新插件)标志运行 Maven。
    【解决方案2】:

    考虑使用 Tomcat plugin for Eclipse

    【讨论】:

      【解决方案3】:

      我采取了另一种方式,将现有的 Eclipse 动态 Web 项目转换为 Maven 项目。要让它们同时工作,可能需要手动编辑项目文件。

      首先从“项目资源管理器”视图中的小箭头中选择“自定义视图”,然后从过滤器列表中取消选中“.* 资源”。这将允许您查看 .settings 目录的内容。

      打开org.eclipse.wst.common.component。它是一个 XML 文件,告诉 WTP 项目 webapp 文件的位置。

      要使其与 Maven 一起工作,您需要它看起来像:

      <?xml version="1.0" encoding="UTF-8"?>
      <project-modules id="moduleCoreId" project-version="1.5.0">
        <wb-module deploy-name="(project name)">
          <wb-resource deploy-path="/" source-path="/src/main/webapp"/>
          <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
          <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
          <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/java"/>
          <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/resources"/>
          <property name="context-root" value="(project URL)"/>
          <property name="java-output-path"/>
        </wb-module>
      </project-modules>
      

      其中有两个“变量”,您可能不想管它 - 项目名称(显示在“服务器”视图中)和项目在 Tomcat 上部署的 URL 名称.

      我认为这是让 WTP 与 Maven 配合得很好真正需要的唯一更改,因为这告诉它在哪里可以找到需要部署到 Tomcat 的各种文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-25
        • 2014-10-27
        • 2013-05-09
        • 2012-11-26
        • 1970-01-01
        • 2018-12-20
        • 2016-11-21
        相关资源
        最近更新 更多