【问题标题】:How to run jetty on a maven modular project如何在 Maven 模块化项目上运行码头
【发布时间】:2015-02-20 23:41:08
【问题描述】:

我正在使用具有以下框架的 maven 开发一个模块化项目:

 |-- parent  (pom packaging)
 |-- model   (jar packaging)
     pom.xml
 |-- services (jar packaging)
     pom.xml
 |-- web-app  (jar packaging)
     pom.xml

pom.xml

我使用 jetty 插件作为嵌入式 servlet 容器,这个问题我需要多次运行 war 项目并从我的 IDE 或 web-app 文件夹运行 mvn jetty:run .这个编译,测试,打包,......网络应用程序但不是其他模块。总结一下,当我运行 mvn jetty:run 时,我想要的所有模块都将编译、测试、打包。如何配置码头插件来做到这一点?

编辑 1

假设我在eclipse的services模块上修改了一些cleasses,我在eclispe上有如下配置:

这样我就失去了关于服务模块的更改,我必须从我的命令行运行 mvn -pl service clean install 然后我可以使用 eclipse 配置并拥有所有更新。我想在 Eclipse 上构建一个 Maven 来完成所有事情。

【问题讨论】:

    标签: java eclipse maven embedded-jetty maven-jetty-plugin


    【解决方案1】:

    您可以有一个多模块项目(最好与父项目不同)并在所有项目上执行 mvn clean install,然后在您的 webapp 项目上执行 mvn jetty:run。

    所以你会在多模块项目上运行类似mvn clean install jetty:run 的东西。正如 cmets 中所解释的那样,我没有自己测试它,因为我不以这种方式运行我的服务器。

    我认为多模块方法是最好的,因为在 maven 的“正常”使用中,没有办法告诉依赖的项目 B 和一个 jar 项目 A 重新编译 A。预期的行为是看在 jar 的本地/远程仓库中。

    但是,如果项目没有不同的生命周期,我强烈反对使用多个项目(模型、dao、服务...)。如果跨项目共享模型,如果一个jar项目在多个war项目中复用,这是有道理的。在这种情况下,您将有不同的版本号,可能需要重新构建所有模块等等......

    如果不是这种情况,您将无法享受任何好处,但会因增加的复杂性而苦苦挣扎。

    编辑:在您的情况下,您需要模块化方法,因为该模型与其他应用程序共享。但在这种情况下,除非您的其他应用程序具有相同的生命周期,否则您不能灵活地修改模型,而不能确保不会影响其他项目。所以你需要另一个版本号,也许是 SNAPSHOT,在这种情况下,在 Eclipse 中运行 jetty 是运行最新版本代码的最简单的解决方案。

    【讨论】:

    • 我需要拆分我的项目,因为我的模型是从不同的其他项目中使用的,我的问题是我想执行编译、测试、打包所有模块并使用只有 Eclipse Maven 构建。这可能吗?
    • 我认为在这种情况下,我确实会使用多模块方法。但是很抱歉强调一些可能不是对您的确切问题的回答并且看问题的东西,但是通常,当我想安装/部署战争或 jar 时,我使用命令行,当我想运行/调试时,我是从 IDE 做的。在第二种情况下,完整的 maven 构建过程并不那么相关,因为如果项目全部导入并在 Eclipse 中可用,则不会使用 .m2 中的 jar,因为 Eclipse 插件有其自己的方式。这有点难以理解,但很方便,可以轻松调试。
    • 我的意思是,如果您在 Eclipse 中打开了服务项目,并且使用容器的嵌入式插件(tomcat、jetty ....)部署您的 Web 项目,您将能够使用服务的当前代码,甚至使用调试器输入此代码,除了在 Eclipse 中重新部署 webapp 之外无需任何操作。
    • 好的,如果容器运行,我可以使用正确的代码,但是如果我在容器关闭时修改了服务模块中的代码,当我部署我的网络应用程序时,我看不到这些变化
    • 在这种情况下,运行 mvn install 或 Project->Clean 的所有项目,你应该运行最后的代码。就个人而言,我更喜欢在依赖项发生更改时使用命令行构建。尽管如此,无论我如何构建项目,为了调试,我更喜欢使用 IDE 运行它。 Imo 在 maven 中运行容器对于自动化集成测试更有趣。
    猜你喜欢
    • 2015-05-22
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多