java - 有没有办法在生成的 WAR 中不包含 jar,同时在 META-INF 的 pom 中包含版本?
问题描述
我使用的项目包括一个主模块和 4 个其他模块,每个模块都有自己的 pom
- 主要的
- 乙
- C
- D
- 网络
主模块在 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 文件。
解决方案
您可以通过将其范围更改为提供来防止不需要的 jar 包含在最终的 WAR 文件中
<dependency>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<version>version</version>
<scope>provided</scope>
</dependency>
推荐阅读
- reactjs - useSWR 变异函数未按预期工作
- angular - .NET 6 中的 Angular 项目
- node.js - 如何使用 JSdoc 引用另一个文件中的普通对象?
- sql - 为什么 SQL 浮点转换为字符串不能与 LIKE 一起使用,但 SQL 浮点转换为十进制转换为字符串可以?
- python - Python:一组可以同时或单独绘制的门
- reactjs - Redux 状态更新
- email - Outlook.com 中的暗模式
- safari - 通过 AirPlay 在 Safari 中启用 FairPlay 流式传输
- mysql - 当 repo IP 不断变化时,如何让 mysql yum repo 的防火墙规则持续存在?
- c# - 是否可以使用 .NET 6 中的 .NET 4.8 库?