【发布时间】:2016-02-14 17:23:59
【问题描述】:
我的生产项目中包含了vaadin-client-compiler 工件(它带来了 Jetty)。我应该吗?
为了重现,我从头开始,让 Maven 为我生成一个 Vaadin 多模块项目:
mvn
-DarchetypeGroupId=com.vaadin
-DarchetypeArtifactId=vaadin-archetype-application-multimodule
-DarchetypeVersion=7.6.2
-DarchetypeRepository=http://repo.maven.apache.org/maven2/
-DgroupId=com.acme
-DartifactId=VaadinTest1
-Dversion=1.0.0-SNAPSHOT
-Dpackage=com.acme.vaadintest1
-Dbasedir=D:\\dev\\java
-DthemeName=mytheme
-DwidgetsetName=MyAppWidgetset
-DuiName=MyUI
-Darchetype.interactive=false
--batch-mode archetype:generate
然后在我执行的父项目中:
mvn -Pproduction clean install
完成后,我查看在“xxx-production”项目中生成的 WAR 文件,并注意到它包含 vaadin-client-compiler、Jetty 等等。
我找到了this ticket,通过查看最后一条评论,我的生产 WAR 中似乎不应该有类似的东西。我犹豫要更改我的 POM,因为它们是由原型生成的,我想在某种程度上应该代表一种 Vaadin 最佳实践方法。我不想再猜测了。还是?
这些工件作为类路径的一部分的问题在于
- 它会膨胀 WAR 的大小
- 它会产生一些问题 wrt Atmosphere,因为它在类路径上找到了 Jetty,因此可能会感到困惑。 (气氛被 Vaadin 在引擎盖下使用)
结果是在 Tomcat 8 上部署时,您会在日志中收到类似这样的严重错误:
14-Feb-2016 16:42:30.368 SEVERE [localhost-startStop-1] org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport Failed to create comet support class: class org.
atmosphere.container.JettyServlet30AsyncSupportWithWebSocket, error: null
总结一下:
- 我不应该将这些工件放在一个 Vaadin 7.6.2 生产项目?
- 如何解决?
【问题讨论】: