有没有办法在生成的WAR中不包含jar,而在META-INF上的pom中也包含版本?

问题描述

我处理的项目包括一个主模块和其他4个模块,每个模块都有其pom

  • 主要
  • B
  • C
  • D
  • 网络

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

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

场景1

是否有一种生成WAR文件的方式,除了与其他模块相对应的jar之外,它不包含所有jar?

我已经看到一些解决方案,这些解决方案涉及添加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>

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...