我在协调构建项目以在应用程序服务器中使用和用作独立应用程序时遇到问题。
为了给出一个整体简化的上下文,假设我有三个项目 A、B、C。
项目 A 依赖于项目 B,项目 B 又依赖于项目 C。
项目 C 有一个依赖项 X,它被标记为已提供,因为预计它将在应用程序服务器中作为 JEE 库提供。即jms.jar。
因此,如果我执行项目 A 的程序集构建,我会得到所有传递依赖项,除了那些标记为按预期提供的那些。
现在我有一个新的部署方案,项目 A 需要在独立环境中使用,即在应用程序服务器之外。
所以现在我需要 jms jar 作为编译依赖项。这是否意味着我应该在项目 A 中显式添加 X 的编译依赖项?这是否违反了得墨忒耳法则,即不要与陌生人交谈,从某种意义上说,项目 A 不应该明确知道项目 C,而只知道项目 B?
这是一个简单的示例,但实际上我有多个已标记为已提供但现在需要编译或运行时依赖项的依赖项,因此它们最终出现在 maven 程序集插件生成的工件中。
这是 Maven 的一个基本问题还是我没有正确使用这些工具?
提前感谢您的任何指导。