如何在 Java <= 8 中强制执行模块边界

How to enforce module boundaries in Java <= 8

我想通过使用 Java 个模块(由 Project Jigsaw 引入)来模块化单体应用程序。

不幸的是,我目前坚持使用 Java 8。无论如何我都想构建这些模块(jar 文件),但没有使用模块-info.java 文件进行声明的功能依赖项和导出的 API.

几周前我偶然发现了一个API/framework,它允许定义几乎与您在模块-info.java 文件中可以做的事情相同的事情。它可以在 JUnit 测试中使用,以强制模块不使用另一个模块的内部,并且该模块只能访问它们明确依赖的模块。

当然,您没有来自编译器或 IDE 的任何帮助,但您可以通过 JUnit 强制访问。不幸的是,我再也找不到提供 API 的项目了。

有人能帮忙吗?

顺便说一句。如果除了单元测试还有其他好的方法,也请告诉我!

https://www.archunit.org/是我一直在寻找的。