在maven试图解决BOM之前,是否有方法安装BOM作为maven调用的一部分。有关正常依赖关系的相关问题,请参阅
在Maven尝试解决它之前,将本地jar依赖项安装为生命周期的一部分
在maven试图解决这些依赖之前,是否有方法安装maven依赖项?
我试图在validate阶段运行一个插件,但是maven总是先解析bom,不管它是导入作用域bom还是用作父bom。
关于BOM:http://www.baeldung.com/spring-maven-bom
发布于 2018-02-04 15:10:25
maven BOM的预期使用在dependencyManagement部分的pom.xml中。
Maven文档声明:
其他希望使用库的项目应该将这个pom导入到它们的pom的dependencyManagement部分。(请参阅依赖机制简介)
在一个多模块项目中,通常只有一个带有父pom的dependencyManagement部分。
另外,为了澄清起见: bom并不会导致对其中指明的工件的依赖。它只是指明了打算一起使用的“成分”的版本(对于由预期将一起使用的几个构件组成的依赖项),以便在相关的pom中添加依赖项(例如dependencyManagement应用到的某个地方)。
使用这种设置,maven将在处理dependencyManagement部分时解析bom。这是评估周围pom.xml (或任何引用子模块)的时间。然后,像任何其他依赖项一样,将bom添加到本地存储库。
因此,在正常情况下,不需要“从网络中获取bom并将其安装到本地存储库中”。
现在,为什么在启动maven调用时bom工件不可用?
虽然在构建步骤中使用的特定工件可能会延迟提供(依赖项的延迟评估),但对于bom依赖项来说,这要困难得多。因此,依赖管理实体需要在第一次解决之前被解析,因为maven无法知道bom中包含了哪些构件。
如果实际上有一个应用程序绝对需要动态地提供这样的bom,那么唯一的机会是一个两层进程,其中顶层提供bom,下层则使用它。请注意,这样的解决方案绝对需要两个独立的maven进程(所以,不仅仅是一个简单的多模块项目),以便将depenceManagement依赖的解决推迟到已知。
https://stackoverflow.com/questions/48415669
复制相似问题