首页 > 解决方案 > 有没有办法在生成的 WAR 中不包含 jar,同时在 META-INF 的 pom 中包含版本?

问题描述

我使用的项目包括一个主模块和 4 个其他模块,每个模块都有自己的 pom

主模块在 DependencyManagement 的 POM 中列出了所有依赖项以及版本。其余的仅包括其 POM 上的 Dependencies 中的库,没有版本号。

Web 模块是我们作为 WAR 导出的模块,它在生成时会在 META-INF 中包含其 POM。

方案 1

有没有办法生成一个不包含所有 jar 的 WAR 文件,除了对应于其他模块的那些?

我已经看到一些解决方案提到添加 Maven EAR 定义,但这是一个艰苦的过程,而且总体上不会产生更小的项目文件。

方案 2

否则,如果没有这种方法可以通过 POM 实现,有没有办法至少将主模块中包含的版本号反映到 WAR 的 META-INF pom 上?

在另一种情况下,至少我可以通过脚本删除 jar 文件,然后在目标计算机上运行 copy-dependencies maven 命令,而不是花费额外的时间来发送可能在那里的 jar 文件。

标签: javamavenjarpom.xmlwar

解决方案


您可以通过将其范围更改为提供来防止不需要的 jar 包含在最终的 WAR 文件中

    <dependency>
        <groupId>groupId</groupId>
        <artifactId>artifactId</artifactId>
        <version>version</version>
        <scope>provided</scope>
    </dependency>

推荐阅读