2013-06-19 30 views
0

我有这种情况: 包1:com.foo.xxxx具有框架的基本功能,而 包2包含具有使用框架功能的类的com.bar.xxxx。模块中的包可见性

我有两个包在同一个项目中(即时通讯使用IntelliJ)。

开发人员不应该从com.foo.xxx包中的com.bar.xxx包引用任何类(因为foo是框架字,您应该使用框中的框架)。但是,现在和当然会发生。该项目在Intellij中可以很好地编译,但是当部署framework.jar时,运行时会出现未解决的依赖关系。

有什么框架或方法可以在编译时解决这个问题吗?有没有人有这方面的经验?我可以使用APT吗?

我可以想像com.foo.xxx的标志或注释,如果在com.foo下的任何Class中使用了com.bar.xxx中的类,将会在编译时引发错误。

任何想法?

谢谢。

Zs。

回答

1

我建议你定义2个独立的项目。 AFAIK IDE(我不知道IntelliJ,但应该)阻止你从项目的循环依赖。甚至更好:使用Maven等构建工具来管理你的依赖关系。

如果您不希望或者可以将代码泄露到2个项目中,则有诸如JDepend之类的工具可以检测程序包依赖性周期。

+0

谢谢!是的,JDepend是我在寻找的东西,以及我在JDepend网站上找到的JdependFixture可能是另一种选择。 –