我有一個由多個包組成的Java項目(在Eclipse中)。我想控制包之間的依賴關係,例如,一個包不能在項目中使用其他包。原因是我將從一個軟件包子集中生成一個獨立的jar。在Java中控制包依賴關係(Eclipse)
我是否必須將我的項目分成幾個才能實現此目標,還是有一些工具或Eclipse插件可以實現嗎?
我有一個由多個包組成的Java項目(在Eclipse中)。我想控制包之間的依賴關係,例如,一個包不能在項目中使用其他包。原因是我將從一個軟件包子集中生成一個獨立的jar。在Java中控制包依賴關係(Eclipse)
我是否必須將我的項目分成幾個才能實現此目標,還是有一些工具或Eclipse插件可以實現嗎?
既然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";
}
注:這是完全OK只,而不會造成任何運行時依賴在開發階段使用的AspectJ這樣。
非常感謝,這正是我想要的。另外,我很高興你指出了我AspectJ的方向 - 它看起來像一個了不起的項目,我將更多地瞭解它。 – vitaut 2011-05-31 13:16:50
@vitaut那麼你必須閱讀[AspectJ in Action](http://www.manning.com/laddad2/)。這是唯一合理的參考。 – 2011-05-31 16:06:50
我不太確定你是否可以阻止一個包被另一個包導入(雖然我想找出來),但我可以推薦[Stan4J](http://stan4j.com)來跟蹤依賴關係。它可以用作Eclipse插件或獨立應用程序。 – Sorrow 2011-05-31 12:16:34