为基于Maven的动态项目构建可执行的war / jar,它具有宁静的服务和Swing功能

时间:2016-05-06 13:15:36

标签: java swing maven tomcat pom.xml

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

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

我将非常感谢快速支持。

1 个答案:

答案 0 :(得分:0)

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

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

我给你的建议是将你的代码分成3个(maven?)模块(我假设一个jax-rs app):

  1. api-impl,仅包含@Resource个类,其中包含"提供的"依赖所有规格
  2. 一个war模块,在war文件中打包#1,适合在容器上部署(比如tomcat)
  3. 一个可执行的胖jar模块,它将#1与实际实现(比如jetty和jersey)打包在一起,并且有一个main()方法可以启动嵌入式jetty,以及 .bat / .sh脚本与java -jar fat.jar之类的东西来运行它。请查看maven shade plugin
  4. 您的用户可以选择胖罐(适合初学者)和战争(针对高级用户)