您是否检查过您的捆绑包是否正在您的临时目录中生成。在 Windows 中的示例,您通常会在以下位置找到临时目录:
C:\Users\<username>\AppData\Local\Temp\tomcat.<random numbers>.8080\work\Tomcat\localhost\<context path>\jawrTmp
我发现,因为它是您的构建的 jar,而不是带有 webapp 目录的旧 mvc war 文件,您需要使用类路径生成器:
https://jawr.github.io/docs/generators.html
前缀是您在实现生成器时将指定的键,路径是一个字符串,根据生成器的功能将具有不同的含义。此外,括号和括号中有参数(两者都是可选的),这进一步有助于参数化映射。一个没有参数的简单映射示例如下:
jawr.js.bundle.one.mappings=jar:net/jawr/cpscript.js
不过要小心,因为我个人没有注意到这个金块:
与法线映射不同,这种引用资源的方式还不允许使用通配符(即:jar:/com/mycompany/myapp/** 不起作用)。
由于它不会递归地遍历目录,因此我必须手动将它们全部添加到 jawr.properties。
一些附加信息
在此之后,我注意到.sorting
文件将附加到捆绑包的内容中(出于某种有趣的原因,我无法弄清楚为什么某些映射会与/jar:<mapping>
; 加倍,MinJS 处理器完全失去了理智。
所以我个人找不到解决这个问题的方法,所以我构建了一个自定义的 PostProcessor 和 PreProcessor。PreProcessor 遍历每个映射并将/jar:<mapping>
值固定为jar:<mapping>
并使用文件内容填充静态列表.sorting
。
PostProcessor 从捆绑的内容中删除对该静态列表中包含的值的任何引用(很好地解决了该问题)。仍然有一个问题,我可以使用前缀 http 访问捆绑包,context-path/jsb/bundles
但我的应用程序仍然没有启动,/bundles
所以不确定我自己是否有问题。
简而言之,因为你有一个 jar,你必须通过类路径而不是 servlet 加载内容(我相信它默认搜索它。)
希望这会有所帮助,如果您确实设法使其全部运行,请在此处分享,因为 spring-boot jars 和 jawr 的文档很少。