Tomcat 7 和 Maven 2 插件

原帖(法语)

作为我的 J4hr 项目的一部分,我设置了 Maven (v2) 工具来构建应用程序。作为应用服务器,我使用 Tomcat 服务器的最新版本,即版本 7。

为了方便部署,我创建了以下 Maven 插件:该插件允许在构建和部署期间集成这两个工具。

我在使用该插件集成这两个工具时遇到了一些问题。Maven 推荐:约定优于配置。也就是说,采用已经确定的默认约定,因此限制了通常繁琐的配置方面。这条格言在 Maven 2 和 Tomcat 7 之间出了错。

这是技术背景

Maven 2 Tomcat 7(从 tar.gz 文件安装在 USER_HOME 目录 OpenJDK 1.6.0_18 Ubuntu 4.10)

发生了什么?我将这个新工件的声明添加到了我的 pom.xml 中,如下所述

  <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat6-maven-plugin</artifactId>
    <version>2.2</version>
  </plugin>

运行命令

mvn tomcat:deploy

然后,砰!控制台中的结果如下

  [INFO] Deploying war to http://localhost:8080/j4hr
  [INFO]
  [ERROR] BUILD ERROR
  [INFO]
  [INFO] Can not invoke Tomcat manager

Maven 说它无法访问 Tomcat manager,从而无法部署 war 文件。

阅读插件文档时,它告诉我们默认使用的 URL 是

http://localhost:8080/manager

我在我最喜欢的浏览器中(我在 Chrome 和 Firefox 之间犹豫)输入了这个 URL,这就是服务器给我的答案

您尝试访问的页面 (/manager/) 不存在。

Manager 应用程序已“为 Tomcat 7 及更高版本重新构建”,并且部分 URL 已更改。现在所有用于访问 Manager 应用程序的 URL 都应以以下选项之一开头

  • /manager/html 用于 HTML GUI
  • /manager/text 用于文本界面
  • /manager/jmxproxy 用于 JMX 代理
  • /manager/status 用于状态页面

    请注意,文本界面的 URL 已从“/manager”更改为“/manager/text”。

    您可能需要调整用于访问应用程序的 URL。然而,您总有可能在应用程序中发现了一个 bug。“如果您确定发现了一个 bug,并且该 bug 尚未报告,请将其报告给 Apache Tomcat 团队。

    有趣,我告诉你!大体上,Tomcat 告诉我们用于管理服务器部署的标准 URL 已经改变了。因此,我们在这个新 URL 中配置我们的插件,它超出了已建立的约定。所以这就是要添加到 pom.xml 中的内容

    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat6-maven-plugin</artifactId>
      <version>2.2</version>
      <configuration>
        <url>http://localhost:8080/manager/html</url>
      </configuration>
    </plugin>

    通常有了这些信息,一切都应该恢复正常,除了一件事。如果服务器管理帐户没有使用默认值配置,那么就会出现新问题。为了克服这个问题,需要在服务器设置文件 setting.xml Maven pom.xml 中提供标识符信息,并引用该服务器的名称。

    希望这能帮助您解决遇到此问题时的情况。