我会将您的 Javascript 和 CSS 包留在 WAR 中,并使用Wro4J之类的东西(我有自己的资产管道代码,我可以在某个时候分享)。
原因如下:
- 为了简化开发,您希望在运行 servlet 容器时编辑 Javascript/CSS 时刷新它们。Maven、Eclipse(和/或 JRebel)资源刷新器不适用于奇怪的包管理。
- 真的没有像 WAR/JAR 那样只用于 Javascript/CSS 的缩小(Require.js和JAM更多地用于依赖加载)。
在单独的项目/jar 中使用单独的 Java 代码的原因是避免耦合、提高重用性和增加内聚性。你试图做的分离主要是为了凝聚力。在很大程度上,您不需要将 Javascript 与您的 Web 应用程序分开,因为它可能已经与 Java 非常分开并且是完全不同的语言/运行时。
但是,如果您说想要 CDN 您的 JS/CSS 以及为什么分离代码可能更容易进行试验,我可以理解。
这里有两个选项:
- Git 的子模块并将 Javascript 和 CSS 作为单独的项目,它们是您的 WAR 项目的子模块。
- 有两个 WAR 项目。一个带有您的后端 Java 代码,另一个带有您的前端代码。您将需要一个支持多个 WARS 的容器,并且您将担心管理可怕的 servlet 容器上下文路径。
实际上,我在之前工作的一家公司中已经完成了第 2 项(笑那个)。它工作得很好。但是现在我更喜欢#1,因为它的快速和轻松(笑那个)。