2011-09-17 42 views
1

我想在現有項目中使用AspectJ。在java應用程序中使用方面 - 當javac/ajc?

我有幾個純Java Eclipse項目,我喜歡創建一個AOP項目。

我不太確定何時需要ajc和何時可選。我們使用Ant(與javac)作爲我們的主要構建,我想避免更改構建。

是以下幾種可能:

我有一個啓用的AspectJ Eclipse和創建我的方面的項目。我從中創建了一個jar,並將其包含在帶有其他項目的普通eclipse工作區中的aspectj jar的jar文件中。 構建包括我的方面jar和aspectj jar作爲與javac的依賴關係jar。

這對於處理這些方面來說足夠嗎? 或者應用程序的每個項目都需要用ajc編譯?

主要目標是儘可能保持當前Eclipse設置和構建環境的結構。

或者這是唯一可能的註釋風格? (如果是的話可以有人聯繫我關於韋弗,以及如何在運行時做一些這方面的信息?)

謝謝

回答

1

如果你想編織你的方式到你的代碼,你必須使用濃縮蘋果汁。如果你只使用javac,即使有註釋,你的代碼也不會被你的方面編織。

這就是說,你不必爲你的蟻羣增加很多東西。

這樣的事情應該做的工作:

<path id="ajclasspath"> 
    <path refid="classpath"/> 
    <pathelement location="${scm.home}/ant_libs/aspectjrt.jar"/> 
</path> 
<iajc inpath="${classes.dir}" destDir="${classes.dir}" fork="true" maxmem="${aspectj.maxmem}"> 
    <argfiles refid="aspectj.argfiles.path"/> 
    <classpath refid="ajclasspath"/> 
</iajc> 

其實,你只要建立一個像正常的,你加用iajc採取的javac你的輸出目錄編譯爲INPATH的一步,你把導致相同的目錄。

您也可以將一個jar作爲輸入到iajc中,並生成一個包含您內部所有東西的jar。

編輯:或者你可以使用運行時編織,如果你的應用程序是一個Web應用程序,它不是太糟糕。如果不是,我不推薦運行時編織,因爲每次啓動應用程序時,啓動時間可能會更長。我沒有很多運行時編織的經驗,但你可以檢查出來。我知道你需要一個aop.xml來定義你的方面。

Regards