当前位置: 首页 > 知识库问答 >
问题:

构建具有依赖关系的Maven 3多模块相互依赖兄弟项目-依赖关系未解决

蔚俊人
2023-03-14

我有一个多模块Maven项目,其中包含子模块ModuleA和ModuleB等。ModuleA将ModuleB列为依赖项。但是,当仅构建模块A时,Maven不会解决模块B的依赖关系-导致NoClassDefFind异常。我想避免构建整个父级以使构建更快。目前我发现让它工作的唯一方法是使用exec插件和脚本,将父项目称为“mvn清洁安装-plModuleB, ModuleA”,这意味着我必须在每次依赖项更改时更改脚本(例如添加ModuleC)。

是否有一种方法可以让Maven自然地解决同级模块依赖关系(无需额外的脚本,例如触发包含最少同级的父项目构建)?这个问题是否表明项目设计不好?如果是,更好的选择是什么?

共有1个答案

颜黎昕
2023-03-14

您不应该避免构建父级,因为在这些情况下,构建父级正是调用依赖关系解析的方式。

如果您的父级包含您不想每次都构建的许多其他子项目,请创建一个中间父项目,以便仅将其用于构建这两个项目。所以:

您当前的解决方案(我认为):

Parent project
   /    |   \
  A     B   Other projects

提议的解决方案:

             Parent project
                 /    \
Intermediate parent   Other projects
        /   \
       A     B
 类似资料:
  • 编写的PHP扩展需要需要依赖另外一个扩展,在PHP-X中可以调用Extension->require来实现。 PHPX_EXTENSION() { Extension *ext = new Extension("test", "0.0.1"); ext->require("swoole"); ext->require("sockets"); return ext;

  • 依赖关系 这是一个非常轻量级的模块,没有其他依赖项。希望大家在JVM或Android上使用以太坊的RLP编码的项目时会选择使用这个模块,而不再编写自己的实现。

  • 依赖关系 ABI一个非常轻量级的模块,唯一的第三方依赖是 Bouncy Castle,用于hash加密 (Spongy Castle on Android)。 最后希望java和安卓开发者,在JVM或Android上有以太坊ABI合作的项目时会选择使用这个模块,而不是再编写自己的实现。

  • 问题内容: 我有一个依赖关系如下: 当我部署一切正常时,这将拉下另一个引发ClassDefNotFound的依赖项。 我添加了两个依赖项,如下所示: 并且仍然面临着同样的问题,即:MVN带来下来不 我该如何解决? 编辑: 添加; 问题答案: 您可能有一个传递依赖项,另一个依赖项取决于您不需要的版本。 要获得所有直接和传递依赖关系的概述,请尝试: mvn依赖项:树 如果您发现同一依赖项的不同版本之间

  • 使用IntelliJ最新的scala插件sbt 13.8和scala 2.11.7的新sbt项目,我尝试添加一个库-akka 2.4.2。在此之后,我简单地添加 [信息]解析org.scala-sbt#testing;0.13.8... [信息]解析org.scala-sbt#test-agent;0.13.8... [信息]解析org.scala-SBT#test-interface;1.0..

  • 请找到下面所有的3个POM。