【发布时间】:2013-02-11 17:06:11
【问题描述】:
我正在尝试将 Maven 集成到我的网络项目中。我想用 mvn tomcat7:run 运行项目,但是当我这样做时,maven 在 MyProject/target/tomcat 中创建新的 tomcat 配置,并且当我尝试在 localhost 上打开它时出现 404 错误。谁能描述我应该如何配置 maven 以使用本地预配置的 tomcat 实例?
【问题讨论】:
我正在尝试将 Maven 集成到我的网络项目中。我想用 mvn tomcat7:run 运行项目,但是当我这样做时,maven 在 MyProject/target/tomcat 中创建新的 tomcat 配置,并且当我尝试在 localhost 上打开它时出现 404 错误。谁能描述我应该如何配置 maven 以使用本地预配置的 tomcat 实例?
【问题讨论】:
Maven 使用 mvn tomcat7:run 在本地创建 Tomcat 配置,因为您在 /target 目录之外运行 webapp,目的是使正在运行的 webapp 与任何外部配置隔离。例如,如果您需要应用自定义 Tomcat 配置,那么 Maven 需要事先修改 Tomcat 配置。由于文件系统权限,这可能是不可能的,或者可能会影响其他 web 应用程序。因此 Maven 将配置复制到本地,应用任何自定义配置并通过 tomcat7-maven-plugin 启动 Tomcat。
一种选择是查看maven-cargo-plugin,它可以将使用Maven 构建的.war 部署到现有的运行Tomcat 安装中。使用正确的configuration,或者使用mvn tomcat7:run,您将使用mvn cargo:redeploy 删除正在运行的webapp 并将其替换为您新构建的webapp。
作为替代方案,可以将 Eclipse 配置为启动 Tomcat 实例以在其中运行 webapp。如果您将 Eclipse 项目类型更改为 Dynamic Web Project,然后通过执行以下操作将 Tomcat 实例添加到 Eclipse:
并指向它执行您下载的 Tomcat。 Eclipse 将使用这个 external Tomcat 作为模板来为您的 webapp 创建一个 internal Tomcat 配置。最后,需要配置 webapp 以将正确的资源和库部署到 Tomcat 中。通过右键单击项目根 → 属性 → 部署程序集,更改列表以匹配您的资源位置。标准设置可能类似于
/src/main/java | /WEB-INF/classes
/src/main/resources | /WEB-INF/classes
/src/main/webapp | /
Maven Dependencies | /WEB-INF/lib
【讨论】: