【问题标题】:Is it possible for a maven reactor project to include another reactor sub-project as module?maven reactor 项目是否可以将另一个 reactor 子项目作为模块包含在内?
【发布时间】:2017-09-03 04:52:43
【问题描述】:

假设有一个带有模块的反应器项目 myproject

<modules>
  <module>parent</module>
  <module>core</module>
  <module>ui</module>
  <module>config</module>
</modules>

myproject里面还有另一个reactor子项目integration-tests

<modules>
  <module>admin</module>
  <module>base</module>
  <module>rest</module>
</modules>

所以,层次结构如下:

myproject
|_ pom.xml
|_ parent
|_ core
|_ ui
|_ config
|_ integration-tests
      |_ admin
      |_ base
      |_ rest

现在,我想构建 integration-tests 模块以及 myproject 模块。一种方法是将 integration-tests 的模块附加到 myproject 模块列表中。

但是可以写吗:

<modules>
  <module>parent</module>
  <module>core</module>
  <module>ui</module>
  <module>config</module>
  <module>integration-tests</module>
</modules>

【问题讨论】:

  • integration-tests 中创建一个 pom 文件并在其中放入模块列表 adminbaserest...如果您从根目录 myproject 构建所有模块基于它们的依赖关系构建...反应器顺序....除此之外,在 myproject 下有一个父文件夹看起来是错误的...为什么不使用 myproject 中的 pom.xml 作为其他模块的父级?

标签: maven maven-reactor


【解决方案1】:

您为什么称其为 reactor 项目(当然,从技术上讲,它是由 reactor 处理的)?然而,官方术语是:

Aggregation (or Multi-Module)

 

3.6.2. Multi-module ...

是的,这是可能的。对 Maven 来说完全没有问题。

但是,如果您使用 Eclipse 作为您的 IDE,它就不能很好地处理嵌套项目。例如,如果您选择admin 项目以在其中创建一个新的,则创建对话框提供myproject/src/main/java 作为源文件夹,因此您必须在每个相应的时间。 Build Paths 也不会显示 Flat,如果您在视图的 Package Presentation 中选择了它。

但是,你可以解决这个问题:

  • 创建myproject 和下面的每个Maven 模块
  • 从 Eclipse 的工作区中删除 myproject。不选中删除磁盘上的项目内容
  • 导入现有的 Maven 项目: myproject 及以下。

【讨论】:

  • 对于旧版本的 Eclipse 来说,不能很好地处理嵌套模块的假设只是部分正确......从 Neon 开始,那里有一个完整的分层视图(早期版本已经使视图变平,但效果很好用它)......所以没问题。同样从此类多级多模块项目的根目录导入整个项目也没有任何问题......
  • @khmarbaise 我昨天用 Neon.3 试过它,它的行为与描述的一样。也许我没有按正确的顺序执行正确的步骤。这真的值得反对吗?你的最后一句话不正是我提到的解决方案吗?这个分层视图的名称是什么?在项目资源管理器中,正如我所描述的:模块项目在 myproject 中可见,但就像一般文件夹一样。没有平面显示器。他们没有覆盖图标。其中没有虚拟库文件夹。右键单击并在其中任何一个上选择 Configure Build Path 会显示最顶部 myproject 的 Build Path。
  • 您是如何将它们导入 Neon 的?你安装M2E了吗?哪个版本的?
  • @khmarbaise 我最初没有导入它们。我从头开始创建它们:主 myproject 带有 NewMaven Project,下面的项目带有 New → Maven 模块 以及 C&P 并相应地调整 POM。然后我从 wkspc 中删除它们并重新导入它们,以便它们在 Project/Package Explorer 视图中显示为同一级别的项目。这是 Neon.3 JEE 附带的 M2E。我使用 v3.3.9 作为外部,而不是嵌入式。我最近做了一个更新。没有找到任何功能/插件。
  • 在 [Youtube|(youtube.com/watch?v=YJld3-RpBlg&t=160s) 上添加了一个短视频,你可以看看...(无音频)...
【解决方案2】:

在 Eclipse 中,您可以很好地导入面向分层的项目。

您可以在此处看到分层项目的导入。

您唯一需要注意的是配置 Eclipse 以显示它,这可以通过以下方式完成:

如果您现在以这种方式配置它,您可以在项目视图中查看它:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 2015-04-02
    • 2013-04-17
    • 1970-01-01
    相关资源
    最近更新 更多