【问题标题】:problem deploying project jar to running container that was started with maven cargo plugin将项目 jar 部署到使用 maven cargo 插件启动的运行容器的问题
【发布时间】:2011-01-15 21:13:15
【问题描述】:

我在一个 Maven 项目中有一系列 Servlet 和 Servlet 过滤器,它们被打包到一个 jar 中,并且该 jar 旨在包含在一系列其他“主机”Web 应用程序的 /lib 目录中。这些 Servlet 并不意味着单独运行 - 也不保证它们自己的战争(它不是一个独立的网络应用程序)。

在我的 src/test/java 目录中,我有一些模拟这些“主机”应用程序的 Mock 对象。

我在集成测试阶段使用 cargo 来启动一个 tomcat 实例,但我很难让 tomcat 使用我在 src/test/java 中的模拟“主机”servlet。

有推荐的方法吗?我需要先从 src/test/java 中的源构建一个战争吗?

另外,在启动容器之前,我需要将我实际项目的 jar 移动到 WEB-INF/lib。我曾考虑使用 maven 程序集插件来做到这一点?有没有办法只使用货物配置选项来做到这一点?

非常感谢您的任何意见。

【问题讨论】:

    标签: tomcat deployment maven integration-testing maven-cargo


    【解决方案1】:

    是的,您必须为此构建一个 WAR。

    Cargo 部署容器所理解的内容,即 WAR 或 EAR 文件,但不是 JAR 文件。

    【讨论】:

    • 你对如何让它从 src/test/java 文件夹而不是 src/main/java 构建战争有什么建议吗?
    • 将 Mock 代码移动到 src/main/java 并有一个标志来激活它。像往常一样建立你的战争。
    【解决方案2】:

    我最终做的是在预集成测试阶段使用 maven-war-plugin 来构建战争。

    然后我使用 maven-dependency-plugin 将一些需要的依赖项复制到战争构建位置。

    然后我将货物指向新的战争地点进行集成测试。

    这样,当我执行 mvn package 时,我会得到一个包含我想要打包的所有类的 jar,而当我运行 mvn integration-test 时,我会遇到一个货物作为测试工具启动的战争。效果很好。

    感谢您查看我的问题。

    【讨论】:

      猜你喜欢
      • 2017-10-01
      • 1970-01-01
      • 2015-06-14
      • 1970-01-01
      • 2012-03-11
      • 2011-05-13
      • 2011-06-11
      • 2020-01-19
      • 2014-12-23
      相关资源
      最近更新 更多