在Eclipse中定义Java 9多模块项目

Arc*_*eus 12 eclipse module project java-platform-module-system java-9

我正在尝试使用Java 9 Jigsaw模块系统(还没有模块经验),并希望用它来封装我项目中的类,但这很令人困惑.

根据这篇文章,应该可以在一个项目中拥有多个模块.我在Eclipse Oxygen(支持Java 9)中创建了一个新项目,其结构与本文中所示的相同.但Eclipse一直告诉我,我不能module-info.java在一个项目中拥有多个.

我真的不知道如何告诉Eclipse它应该使用"多模块模式".我真的很感激不必为每个模块创建一个新项目.

这有效:

在此输入图像描述

这不是:

在此输入图像描述

但根据这篇文章,这样的事情应该有效:

在此输入图像描述

如何使用Eclipse部署模块化项目?关于新的jmod扩展没什么可看的.我仍然像以前一样将其导出为可运行的JAR文件吗?

请注意,我的问题涉及使用IDE(没有命令行,我的意思是IDE应该是可能的,对吗?)谢谢你启发我.

how*_*ger 10

目前,Eclipse要求您为每个模块创建一个单独的项目(例如,因为每个模块都有自己的Java构建路径).

要理解这个设计决策,请考虑Java模块对应于OSGi bundle/Eclipse插件,并且每个bundle /插件一直都有一个单独的项目.如果你来自Maven世界,你可能会期待更深层次的文件夹结构.但是模块是自包含的,并且将几个模块组合到一个项目中只会添加额外的文件夹级别而没有意义.但是,如果需要其他文件夹级别,Eclipse支持嵌套项目和所谓的工作集.

计划在2019年3月20日的Eclipse 2019-03(4.11)中将模块导出为图像(参见Eclipse bug 518445).将模块导出可在模块路径(-m)上使用的JAR已经可以工作(请参阅我的视频).

  • 多可惜.但这至少回答了我的问题. (3认同)
  • Eclipse项目==模块.已经接受了.令人遗憾的是,命令行编译似乎支持这种多模块模式,而eclipse根本不支持,因为我更喜欢只有一个工作空间在我的所有项目中具有相同的工作空间设置.我已经将工作集用于分组的其他含义. (2认同)
  • 在架构方面,我认为在 Eclipse 项目中拥有多个模块的原因有很多。包很弱以确保某种架构,而模块则足够严格以防止架构随着时间的推移而被侵蚀。我想创建一个带有域内核和几个围绕它的适配器的六边形架构。全部都在一个项目中 - 因为它就是这样:只是一个项目。我知道 osgi 对此有不同的看法,说一个模块就是一个项目。但老实说,我想采用 Java9 方法,而不是坚持任何 osgi 传统。 (2认同)