Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven:让SkinnyWars保留一些库_Java_Maven_War_Ear_Skinny War - Fatal编程技术网

Java Maven:让SkinnyWars保留一些库

Java Maven:让SkinnyWars保留一些库,java,maven,war,ear,skinny-war,Java,Maven,War,Ear,Skinny War,我正在使用maven构建一个包含两个EJB和一些web应用程序的ear文件。我想使用瘦战争,因为更多的战争可能会随之而来 据我所知,以下内容将从所有war文件的WEB-INF/lib目录中删除所有*.jar文件(ejb jar除外): <dependencies> <dependency> <groupId>my.domain</groupId> <artifactId>project</artifactId&

我正在使用maven构建一个包含两个EJB和一些web应用程序的ear文件。我想使用瘦战争,因为更多的战争可能会随之而来

据我所知,以下内容将从所有war文件的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>
[..]

我的域名
. WebJAR是打包在jar文件中的web库(css、JS等),如下所示:

对于任何与Servlet 3兼容的容器 WEB-INF/lib目录将自动作为静态目录提供 资源。这是因为META-INF/resources中的任何内容 WEB-INF/lib中JAR中的目录自动公开为静态目录 资源

资料来源:

我真的很喜欢这个主意。所以现在,当所有的罐子都移到myear/lib/webjar,包含的文件不再公开:-(

我还没有找到skinnyWars不排除某些库(如org.webjars::)的选项


如果有其他解决方案,我希望看到您的输入。

因此,有一个简单的解决方案。正如您从更新的答案中看到的,我对war文件有两次(几乎)相同的依赖关系:一次是
type=war
,另一次是
type=pom
,因此所有依赖关系都包含在ear中并从war中剥离

现在,我可以手动将共享库放在那里,但我确实是这样。所以我想使用上面提到的解决方案。看起来有点粗糙,但工作完美无瑕

但过了一会儿,我点击了我没有使用的

它的工作原理是有另一个依赖项,它只包含一个Servlet。这个Servlet将请求重写/传递到
META-INF/resources
中的相应文件。我想这可能也适用于我的情况


因此,我在servlet2文档中加入了依赖项,并将相应的部分添加到
web.xml
文件中。但它并没有按预期工作。

不,它不会从WAR中删除所有JAR。只有那些在EAR的POM中指定为依赖项的JAR。请参见啊,好的。我只是再次使用依赖项包括WAR:type=POM,b因为干燥原理。无论如何,我找到了另一个解决方案,马上就发布了。