Maven 3 - 从WAR中排除子JAR

时间:2014-09-08 04:11:44

标签: maven jar war

免责声明:我在搜索引擎优化和网络上看了很多类似的问题,但我似乎无法找到适用于我特定情况的任何问题。

我试图在当前使用Ant的(非常大的)旧项目中实现Maven 3.0.5。作为第一步,我只是尝试使用与Ant构建脚本相同的结构来构建工件。

这要求我构建一个包含多个JAR和几个WAR的EAR。到现在为止还挺好。我能做到这一点。

问题是每个WAR都接收项目中的每个依赖项,以及这些依赖项的所有子JAR。这使得每场战争都变得荒谬可笑。

我需要做的是相当于

的WAR
<exclusions>
    <exclusion>
        <groupId>*</groupId>
        <artifactId>*</artifactId>
    </exclusion>
</exclusions>

我已经看到它建议使用

<scope>provided</scope>

但这会导致我需要排除初始依赖项本身。

是否有办法包含JAR,但是要从WAR文件中排除 依赖项?

2 个答案:

答案 0 :(得分:0)

您包含的JAR依赖于它们的依赖性是有原因的!你不能只剪切依赖树,你会破坏你的库,可能还有你的代码。

如果需要,您可以将所有JAR文件解压缩到一个目录中,进行手动构建,并进行一些覆盖测试,以便准确了解您将要和不需要的类。然后,您可以将类重新打包(手动)到为您的应用程序定制的新JAR文件中。

但是,我不建议这样做。你可能仍然会破坏东西,磁盘空间也很便宜。

答案 1 :(得分:0)

提供的是您想要在这里使用的内容。

但是,您需要确保至少某些组件实际上包含应用程序所需的jar文件。只要应用程序运行时,它就会在类路径中包含所有必需的jar,它就可以正常运行。它将使用父依赖项进行构建/编译,但scope参数将阻止它们包含在子包的目标目录中,并假设它将在运行时作为父类或另一个包的一部分位于类路径中。由您决定&#34;提供&#34;确实如此。

相关问题