2011-05-31 10 views
2

我有一個由多個包組成的Java項目(在Eclipse中)。我想控制包之間的依賴關係,例如,一個包不能在項目中使用其他包。原因是我將從一個軟件包子集中生成一個獨立的jar。在Java中控制包依賴關係(Eclipse)

我是否必須將我的項目分成幾個才能實現此目標,還是有一些工具或Eclipse插件可以實現嗎?

+0

我不太確定你是否可以阻止一個包被另一個包導入(雖然我想找出來),但我可以推薦[Stan4J](http://stan4j.com)來跟蹤依賴關係。它可以用作Eclipse插件或獨立應用程序。 – Sorrow 2011-05-31 12:16:34

回答

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"; 
} 

注:這是完全OK只,而不會造成任何運行時依賴在開發階段使用的AspectJ這樣。

+0

非常感謝,這正是我想要的。另外,我很高興你指出了我AspectJ的方向 - 它看起來像一個了不起的項目,我將更多地瞭解它。 – vitaut 2011-05-31 13:16:50

+0

@vitaut那麼你必須閱讀[AspectJ in Action](http://www.manning.com/laddad2/)。這是唯一合理的參考。 – 2011-05-31 16:06:50