我正在使用 maven 构建一个包含两个 EJB 和一些 Web 应用程序的 ear 文件。我想使用瘦身战争,因为接下来可能会有更多的战争。
据我了解,以下将从所有战争文件的 WEB-INF/lib 目录中删除所有 *.jar 文件(ejb jar 除外):
<dependencies>
<dependency>
<groupId>my.domain</groupId>
<artifactId>project</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
<!-- Scope: Provided for skinnies. -->
<dependency>
<groupId>my.domain</groupId>
<artifactId>project</artifactId>
<version>${project.version}</version>
<type>pom</type>
</dependency>
</dependencies>
[..]
<configuration>
<version>7</version>
<defaultLitBundleDir>lib/</defaultLitBundleDir>
<skinnyWars>true</skinnyWars>
[..]
我遇到的问题是,这显然也会删除所有webjars。Webjar 是 Web 库(css、JS 等),它们被打包在 jar 文件中,如下所示:
对于任何 Servlet 3 兼容的容器,WEB-INF/lib 目录中的 WebJars 会自动作为静态资源可用。这是因为 WEB-INF/lib 中 JAR 中 META-INF/resources 目录中的任何内容都会自动公开为静态资源。
来源:http ://www.webjars.org/documentation#servlet3
我真的喜欢这个主意。所以现在,当所有 jar 都移到 myear!/lib/webjar 时,包含的文件不再暴露。:-(
我还没有找到让 skinnyWars 不排除某些库(如 org.webjars: :)的选项。
如果有其他解决方案,我很乐意看到您的意见。