限制对其他Java包的Java包的访问

时间:2017-03-30 09:26:46

标签: java static-code-analysis

让我们说我有三个公共java包:

my.com.model
my.com.view
my.com.controler

现在我想限制允许哪个包从专用包中导入类。

所以,例如view包中的类只允许从controler包中导入类 但不是来自模型包,而且只允许controler包从模型包中导入类 不是来自视图包,模型包根本没有对模型和视图包的访问权。

我怎样才能做到这一点?我知道Java不支持这样的要求,所以可能是一些静态代码 分析工具可以帮助我。

更新:我使用的是Java 7

1 个答案:

答案 0 :(得分:1)

您可以通过在分离的模块中提取每个关注点来定义它。

视图模块将依赖于控制器模块,控制器模块将依赖于模型模块。

您可以使用Maven来实现这些限制。

例如,您可以使用3个模块定义反应堆或多模块Maven项目。

Maven为声明的依赖项提供传递依赖项。因此,为了完全满足您的要求,view模块应排除由model依赖项提取的传递controller依赖项。