在Java中控制包依赖(Eclipse)

时间:2011-05-31 12:12:41

标签: java eclipse dependencies package

我有一个包含多个包的Java项目(在Eclipse中)。我想控制包之间的依赖关系,例如,一个包不能使用项目中的其他包。这样做的原因是我将从一个包的子集中创建一个自包含的jar。

我是否必须将我的项目分成几个才能实现这一点,或者是否有一些工具或Eclipse插件可以实现这一目标?

1 个答案:

答案 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就可以了,但不会造成任何运行时依赖性。