【问题标题】:Build executable war/jar for Maven based dynamic project that has restful Services and Swing features为具有restful Services和Swing特性的基于Maven的动态项目构建可执行的war/jar
【发布时间】:2016-09-01 14:08:06
【问题描述】:

我需要制作一个基于动态 Web 的应用程序的可执行 War/Jar。 我们的目标是:

请有人帮我创建一个满足上述要求的示例 Hello 工作项目。

我将非常感谢您的快速支持。

【问题讨论】:

    标签: java swing maven tomcat pom.xml


    【解决方案1】:

    “可执行的战争”虽然听起来很吸引你,但却是一个可怕的想法:

    • 我假设当您说“Web 应用程序”时,您的意思是基于 servlet/jax-rs 的东西
    • 这意味着要成为独立的“可执行文件”,您必须打包各种 servlet/jax-rs/someSpec 库/实现(可能是嵌入式码头)
    • 那些依赖类将保留并“干扰”容器提供的类,当您在 tomcat 上部署完全相同的战争时应该使用这些类(路径上将有 2 个不同的类 Servlet 实现) )
    • 这类类别名问题相对难以发现和识别,如果您特别不走运,简单的 hello world 示例将起作用,而更复杂的示例会以奇怪的方式失败。

    我对你的建议是将你的代码分成 3 个(maven?)模块(我假设是一个 jax-rs 应用程序):

    1. api-impl,仅包含 @Resource 类,对所有规范都有“提供”依赖
    2. 一个war模块,将上面的#1打包成一个适合部署在容器(比如tomcat)上的war文件
    3. 一个可执行的 fat jar 模块,将 #1 与实际实现(比如 jetty 和 jersey)打包在一起,并具有一个引导嵌入式码头的 main() 方法以及 .bat/。使用类似java -jar fat.jar 的sh 脚本来运行它。为此请查看maven shade plugin

    您的用户可以在 fat jar(针对初学者)和 war(针对高级用户)之间进行选择

    【讨论】:

      猜你喜欢
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 2014-01-10
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      相关资源
      最近更新 更多