SBT 可以使用 java 11 模块路径来实现项目依赖吗?

Wol*_*ich 6 java sbt java-platform-module-system

我使用SBT构建了一个纯java项目。该项目由多个模块组成,projectB依赖于projectA。现在,在切换到JDK 11后,这种依赖关系不应通过类路径建模,而应通过模块路径建模。是否可以告诉SBT模块依赖性必须通过模块路径而不是路径来解决?基本上我已经设置了一个(sbt-)模块间依赖关系,它说projB.dependsOn(projA)- 那么我可以告诉SBT以某种方式将此依赖关系放在 javac模块路径上而不是使用类路径吗?我认为目前没有办法做到这一点。

编辑:进一步分析表明,我还需要使用正常的库依赖项(来自 Nexus 存储库上的库)作为模块依赖项。所以下一个问题是 - 如何将这些库依赖项视为SBT中的模块依赖项?

我确实知道SBT是一个scala构建工具,并且将它用于纯 java 项目有些牵强,但我将SBT用于其他(scala-)项目,并且我不想介绍太多不同的构建工具,直到我真的必须这样做。那么,有没有 sbt 级别的解决方案呢?

编辑:为了澄清这个问题 - 有问题的项目是我们修改的一种开源库。SBT 构建文件来自我们的组织,所以我必须维护它。该项目切换为使用 module-info 类,并且它通过模块路径依赖于其他(仅限二进制)库,也就是说,如果您在编译中包含 module-info.java 。

因此,在我们的 SBT 构建中,我必须使用某些外部库依赖项的模块路径。此外,SBT 子项目相互依赖,即我们还必须使用模块路径。有没有办法告诉 SBT:

  • 该库必须位于模块路径上,而不是类路径上
  • 该项目依赖项必须位于模块路径上,而不是通过类路径?

这就是问题的核心。我也许可以为第一个问题编写一个插件(例如,没有库依赖性,而是模块化库依赖性) - 但我还不知道如何处理第二部分(告诉项目项目依赖性必须位于模块路径上并且不在类路径上)。