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

Maven模块与作为依赖项的独立Maven POM

宰父涵忍
2023-03-14

我目前在一个项目中工作,该项目包括大约12个子项目。

每个子项目都包含一个POM,该POM单独构建依赖关系。

上游子项目包括下游子项目作为依赖项,其方式与包含对log4j:

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
    </dependency>

这似乎对我们管用。

然而,今天,经过11个月的开发,我决定重温这十几个POM文件,并考虑到重构。

我随后发现了 标记,并开始怀疑我的Maven项目策略是否“正确”。

重构我的POM,使最上层的POM(一个Web WAR项目)变成一个列出模块而不是上面一系列依赖项的父POM,会有什么好处呢?

我预计这十几个子项目中的大多数都将以其自身的方式进入一个生命周期,这样它们就可以在公司的Nexus存储库中作为其他公司项目的代码库使用。

例如,是否使用多模块方法来分解和组织一个项目的子组件的组成?或者我们会用一个模块来表示一个项目的整个组件吗?

共有1个答案

楚浩然
2023-03-14

谢谢大家的意见,我知道这个问题是主观的。

过了一段时间,我觉得这个问题的“正确”答案将由另一个问题决定:每个子项目都有自己的生命周期吗?

我想我们可以使用UML类聚合和组合作为一个比喻。如果子项目(叶节点借用@Yorkw的术语)不能独立存在,或者不能在父项目的范围之外有自己的生命周期(不管是WAR、EAR之类的),那么我会说IMHO该结构将保证在父POM中使用模块。

 类似资料:
  • 而不是常规的选项。 该模块有一个文件和自己的文件

  • 在使用scalatest时,我遇到了一个奇怪的问题。我有一个带有多个模块的maven项目。如果我直接在模块中执行mvn测试。它可以正常工作,但如果在根文件夹中执行,它会抱怨编译时缺少包(依赖项)。 我的配置如下所示: 插件配置: 如果我从maven scala插件中删除目标,它将编译,但scalatest将找不到测试源并退出,并且没有执行任何测试 : 你知道我做错了什么吗?! 干杯

  • 问题内容: 是否可以在pom.xml中将JavaFX 2.0引用为Maven中的依赖项,以便一切顺利进行? 我在这个问题中看到可以在本地安装jfxrt.jar,但是理想情况下,我希望使用一种更简单的方法,在该方法中可以正确解决依赖关系并下载它,而无需任何本地黑客。 问题答案: 不,目前还没有这样的解决方案。我怀疑它会永远存在,因为从Java 1.7更新2开始,JavaFX与JVM一起安装了。从Ja

  • 我有一个多模块maven项目,包含三个模块、和 Core具有以下依赖项定义 我已经为所有三个模块添加了Java9定义,的如下所示: 但是,我不知道如何让的测试类能够在测试执行期间看到类。当尝试测试运行时,找不到类。 如果向的添加需要My.Project.TestUtils;的: 然后在编译时,我得到一个错误,即找不到模块(大概是因为它只是作为测试依赖项引入的)。 在Java9模块化的世界中,如何处

  • 我有一个关于Maven依赖解析机制如何在多模块项目中工作的问题。 通常,我只在构建多模块项目时使用“mvn clean install”,我的假设是,如果项目中的任何模块需要以前的模块,依赖关系将通过访问本地存储库并加载相应的“jar”来解决。 由于项目内部原因,我必须使用“mvn清洁编译”,这个命令自然不会创建任何“jar”,而“install”不存在。所以在这里我开始想知道,多模块项目的依赖项

  • 我有一个简单的java应用程序-maven项目在我的Netbean IDE。 在我创建Maven Web Application并添加第一个项目作为依赖项之后,Netbean显示一切都很好,我也可以使用所有方法。 但在运行时,我会 在不创建多模块JavaEE应用程序的情况下,是否有可能使web项目依赖于简单的java应用程序?