Maven:让 SkinnyWars 保留一些库
Maven: Let SkinnyWars preserve some libraries
我正在使用 Maven 构建一个包含两个 EJB 和一些 Web 应用程序的 ear 文件。我想使用瘦 wars,因为接下来可能会有更多 wars。
据我了解,以下将从所有 war 文件的 WEB-INF/lib 目录中删除所有 *.jar 文件(ejb jars 除外):
<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。 Webjars 是打包在 jar 文件中的网络库(css、JS 等):
With any Servlet 3 compatible container, the WebJars that are in the
WEB-INF/lib directory are automatically made available as static
resources. This works because anything in a META-INF/resources
directory in a JAR in WEB-INF/lib is automatically exposed as a static
resource.
来源:http://www.webjars.org/documentation#servlet3
我真的很喜欢这个主意。所以现在,当所有 jars 都移动到 myear!/lib/webjar 时,包含的文件不再暴露。 :-(
我还没有找到让 skinnyWars 不排除某些库的选项(比如 org.webjars::)。
如果有其他解决方案,我很乐意看到您的意见。
所以,有一个简单的解决方案。正如您从我更新的答案中看到的那样,我有两次(几乎)相同的 war 文件依赖项:一次是 type=war
,另一个是 type=pom
,所以所有依赖项都包含在耳朵并从 war.
中剥离
现在,我可以手动将共享库放在那里,但我 thinking of DRY。所以我想采用上述解决方案。看起来有点 hacky,但工作完美。
但过了一会儿,我点击了我没有使用的 wrong link in the webjars documentation for Servlet2。
它的工作原理是有另一个依赖项,它只包含一个 Servlet。此 servlet rewrites/passes 请求 META-INF/resources
中的相应文件。我认为这可能也适用于我的情况。
所以我包含了在 servlet2 文档中看到的依赖项,并将相应的部分添加到 web.xml
文件中。它没有按预期工作。
我正在使用 Maven 构建一个包含两个 EJB 和一些 Web 应用程序的 ear 文件。我想使用瘦 wars,因为接下来可能会有更多 wars。
据我了解,以下将从所有 war 文件的 WEB-INF/lib 目录中删除所有 *.jar 文件(ejb jars 除外):
<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。 Webjars 是打包在 jar 文件中的网络库(css、JS 等):
With any Servlet 3 compatible container, the WebJars that are in the WEB-INF/lib directory are automatically made available as static resources. This works because anything in a META-INF/resources directory in a JAR in WEB-INF/lib is automatically exposed as a static resource.
来源:http://www.webjars.org/documentation#servlet3
我真的很喜欢这个主意。所以现在,当所有 jars 都移动到 myear!/lib/webjar 时,包含的文件不再暴露。 :-(
我还没有找到让 skinnyWars 不排除某些库的选项(比如 org.webjars::)。
如果有其他解决方案,我很乐意看到您的意见。
所以,有一个简单的解决方案。正如您从我更新的答案中看到的那样,我有两次(几乎)相同的 war 文件依赖项:一次是 type=war
,另一个是 type=pom
,所以所有依赖项都包含在耳朵并从 war.
现在,我可以手动将共享库放在那里,但我 thinking of DRY。所以我想采用上述解决方案。看起来有点 hacky,但工作完美。
但过了一会儿,我点击了我没有使用的 wrong link in the webjars documentation for Servlet2。
它的工作原理是有另一个依赖项,它只包含一个 Servlet。此 servlet rewrites/passes 请求 META-INF/resources
中的相应文件。我认为这可能也适用于我的情况。
所以我包含了在 servlet2 文档中看到的依赖项,并将相应的部分添加到 web.xml
文件中。它没有按预期工作。