使用AspectJ編譯器(ajc)

2018-03-31 11:55 更新

使用AspectJ編譯器(ajc)

此功能僅在 Ultimate 版本中得到支持。

默認(rèn)情況下,IntelliJ IDEA 使用 javac 編譯器。要使用 AspectJ 編譯器 ajc (而不是與 javac 組合),應(yīng)對相應(yīng)的 IDE 設(shè)置進(jìn)行更改。

項(xiàng)目級別指定的 ajc 設(shè)置可以在各個(gè)模塊的級別進(jìn)行微調(diào)。與模塊相關(guān)的 AspectJ 方面用于此目的。

請注意,ajc 不與 IntelliJ IDEA 捆綁在一起,應(yīng)該單獨(dú)下載。

ajc 作為 AspectJ 發(fā)行版的一部分提供,您可以從 AspectJ 網(wǎng)站下載。

優(yōu)化編譯性能:將ajc與javac結(jié)合使用

IntelliJ IDEA 可讓你使用 ajc 與 javac 組合,而無需在 IDE 設(shè)置中切換編譯器。

首先,您應(yīng)該選擇 ajc 作為您的項(xiàng)目編譯器(在 Java 編譯器頁面上的 Use 編譯器字段)。

如果您想要同時(shí)使用 javac,請打開“Delegate to Javac”選項(xiàng)。如果啟用此選項(xiàng),那么沒有 aspect 的模塊將被編譯為 javac (通常更快),并且包含 aspect 的模塊將用 ajc 編譯。(如果此選項(xiàng)為 off,則 ajc 用于項(xiàng)目中的所有模塊。)

您可以在各個(gè)模塊級別對編譯器(ajc 和 javac)之間的任務(wù)分配進(jìn)行微調(diào)。對于只包含 @Aspect-annotated 的 Java 類(在 .java 文件中)的形式的模塊,您可以指定 ajc 僅應(yīng)用于后編譯的編織(weaving)。如果這樣做,javac 將用于編譯所有源文件,然后 ajc 將其應(yīng)用于編譯的類文件進(jìn)行編織。因此,整個(gè)過程(編譯+編織)(compilation + weaving)將花費(fèi)更少的時(shí)間。

如果打開了“Javac代理選項(xiàng)(Delegate to Javac)”,則通過在與模塊關(guān)聯(lián)的 AspectJ facet 中打開相應(yīng)的選項(xiàng)來啟用 ajc 的編譯后編織模式。

請注意,您不應(yīng)為包含代碼樣式 aspect 的模塊(在 .aj 文件中定義的 aspect)啟用此選項(xiàng)。

控制ajc aspectpath

您可以為每個(gè)模塊分別控制 ajc aspectpath 選項(xiàng),請參閱在模塊級別對 ajc 的使用進(jìn)行微調(diào)。

由于將適當(dāng)配置的 Maven 項(xiàng)目導(dǎo)入 IntelliJ IDEA,可以自動設(shè)置該 aspectpath 模塊。

選擇ajc作為項(xiàng)目編譯器并指定其設(shè)置

  1. 打開“設(shè)置(Settings)”對話框(例如,Ctrl+Alt+S)。
  2. 在對話框的左側(cè)部分,在搜索框中鍵入 compiler。然后,在搜索框下方的窗格中選擇 Java Compiler。
  3. 在對話框右側(cè)部分打開的 Compiler>Java Compiler 頁面中:
    1. 從“使用編譯器(Use compiler)”列表中選擇 Ajc。
    2. 如有必要,請指定字節(jié)碼版本。(大致來說,這些是最低目標(biāo) JVM 版本。)
    3. 在 Path to Ajc compiler 字段中指定編譯器的路徑。您可以在該字段中鍵入路徑,或單擊 并在相應(yīng)的對話框中選擇必要的文件。(您需要的 aspectjtools.jar 文件位于 <AspectJ installation directory>\lib 中)
    4. 如果需要,請指定要在 "命令行參數(shù)(Command line parameters)" 字段中傳遞給編譯器的命令行選項(xiàng)。您可以在該字段中正確輸入?yún)?shù),或者單擊 以打開文本輸入?yún)^(qū)域較大的命令行參數(shù)對話框。
    5. 點(diǎn)擊“測試(Test)”以檢查指定的設(shè)置是否正確。
    6. 如果要使用 javac 編譯不包含 aspect 的模塊,請選中“委派到 javac(Delegate to Javac)”復(fù)選框。需要注意的是,ajc 和 javac 之間的任務(wù)分配可以在各個(gè)模塊的級別進(jìn)行微調(diào)。
  4. 在“設(shè)置(Settings)”對話框中單擊“確定”。

在模塊級別上微調(diào)ajc的使用

為了能夠調(diào)整 ajc 在模塊級別的使用,您應(yīng)該添加一個(gè) AspectJ facet 到相應(yīng)的模塊。

完成該操作之后,您可以指定 ajc 僅用于后編譯后編織。您也可以指定 aspectpath 模塊。

  1. 將 AspectJ facet 添加到感興趣的模塊。
  2. 在“項(xiàng)目結(jié)構(gòu)(Project Structure)”對話框的右側(cè)打開的頁面中的“編譯器(Compiler)”下,根據(jù)需要指定設(shè)置(請參見下文)。
  3. 如果只想使用 ajc 來編織已編譯的類文件(本例中的源代碼是用 javac 編譯的),請選中“編譯后編織模式(Post-compile weave mode)”復(fù)選框。重要提示:如果模塊包含 .aj 文件,請不要選中此復(fù)選框。
  4. 為了形成 aspectpath 模塊:
    • 使用 (Alt+Insert)添加庫和其他模塊。在打開的對話框中選擇必要的庫和模塊。(建議選擇該模塊的相關(guān)性。)
    • 使用  (Alt+Delete)從列表中刪除選定的項(xiàng)目。
    • 使用 (Alt+Up)將所選項(xiàng)目在列表中向上移動一行。
    • 使用 (Alt+Down)將所選項(xiàng)目在列表中向下移動一行。
  5. 在“項(xiàng)目結(jié)構(gòu)(Project Structure)”對話框中單擊“確定”。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號