在大型Web应用程序中,我使用的是requirejs amd模块,因此脚本本身是模块化的,可维护的。我有以下目录结构
web
|-src
|-main
|-java
|-resources
|-webapp
|-static
|-scripts
|-styles
|-images
|-static-built //output from r.js. not checked into git
|-WEB-INF
在构建期间,使用r.js将js和css优化为静态构建的文件夹。 Gradle是构建工具。
现在问题:jsps引用static / scripts文件夹中的脚本,这就是我在本地工作时的需求。但是在构建战争时,我希望从静态构建的文件夹中提供静态文件。重要的是源jsp不必更改为从static-built文件夹提供优化文件。
我有两个选项:a)战争时的gradle构建应该包括static-built而不是static。 b)包括静态构建以及静态和使用tuckey urlrewrite从static-built而不是static中选择resouce。
社区在类似情况下遵循哪些最佳做法?
答案 0 :(得分:1)
我们已将服务器设置为从系统属性读取运行时配置文件(dev,qa,prod等),该属性根据它确定某些设置。在生产配置文件中运行时,我们提供来自WAR的优化文件。在开发中,我们直接从应用程序上下文之外的文件系统提供非缩小和非连接文件。
文件的结构符合官方multipage example。
配置服务文件取决于您选择的后端解决方案。以下是spring的示例。
或者,r.js可以generate source maps,这些也有助于开发。
答案 1 :(得分:0)
不确定这个问题是否已经过时,但我遇到了类似的问题。
我有类似的项目结构,但唯一不同的是 - 我将项目拆分为2个模块:
然后在Gradle构建中,服务的“汇编”任务取决于 ui 的“汇编”任务和另一个名为“预装配”的自定义任务”。这个“预先组装”任务是将优化的js文件复制到我想要的位置。
所以,基本上,我刚刚添加了另一个负责将所有优化的js文件放在适当位置的任务。