作为我的 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 都应以以下选项之一开头
请注意,文本界面的 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 中提供标识符信息,并引用该服务器的名称。
希望这能帮助您解决遇到此问题时的情况。