我对maven
很新,并继承了我需要维护的旧应用程序。它有几个提供的库(由容器提供)。我想知道是否有任何方法可以生成与所有依赖项(包括提供的库)的战争,而无需修改 pom.xml 。 (有很多)有没有办法从命令行覆盖所有libs
的范围?
我的挑战是我正在处理具有相当深的依赖图的企业应用程序,并且在所有地方都提供了许多依赖项。作为我的实验的一部分我想生成一个自包含且具有所有依赖关系的战争。更新数十个poms并改变范围不是我想要的。有没有办法从命令行执行此操作?
答案 0 :(得分:1)
你只需要改变创造战争的那个pom。在此pom中,指定当前"提供的依赖项"具有所需的范围。
Maven基于它依赖的模块计算war项目的传递依赖性,并使用提供的范围引入这些特定的依赖项。您可以将此视为定义这些依赖项的默认配置。您可以通过使用所需范围显式指定war模块中的依赖关系来覆盖默认(继承)范围。
在我看来,非战争模块可能不应该设置提供的范围,而应该将此决定留给实际创建可运行工件的模块(例如,您的war模块)。例如,如果您要创建一个胖jar来作为独立应用程序执行代码(相对于提供这些依赖项的容器中的war),您可能希望将它们包含在jar中。