我有一个包含多个包的Java项目(在Eclipse中)。我想控制包之间的依赖关系,例如,一个包不能使用项目中的其他包。这样做的原因是我将从一个包的子集中创建一个自包含的jar。
我是否必须将我的项目分成几个才能实现这一点,或者是否有一些工具或Eclipse插件可以实现这一目标?
答案 0 :(得分:5)
因为Aspectj现在是一个Eclipse项目,所以我认为Aspectj解决方案也符合条件。 AspectJ非常适合这样的策略实施,因为它允许您基于切入点创建编译时警告和错误。如果您使用AspectJ Developer Tools,则可以在Eclipse中启用并运行方面。
以下是政策执行方面的示例:
public aspect PolicyEnforcement {
pointcut project1Call() : call(* com.project1..*.*(..));
pointcut inProject1() : within(com.project1..*);
pointcut project2Call() : call(* com.project2..*.*(..));
pointcut inProject2() : within(com.project2..*);
declare error : project1Call() && inProject2()
: "Project2 is not allowed to access Project1";
declare error : project2Call() && inProject1()
: "Project1 is not allowed to access Project2";
}
注意:在开发阶段只使用AspectJ就可以了,但不会造成任何运行时依赖性。