codecamp

使用AspectJ编译器(ajc)

使用AspectJ编译器(ajc)

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

默认情况下,IntelliJ IDEA 使用 javac 编译器。要使用 AspectJ 编译器 ajc (而不是与 javac 组合),应对相应的 IDE 设置进行更改。

项目级别指定的 ajc 设置可以在各个模块的级别进行微调。与模块相关的 AspectJ 方面用于此目的。

请注意,ajc 不与 IntelliJ IDEA 捆绑在一起,应该单独下载。

ajc 作为 AspectJ 发行版的一部分提供,您可以从 AspectJ 网站下载。

优化编译性能:将ajc与javac结合使用

IntelliJ IDEA 可让你使用 ajc 与 javac 组合,而无需在 IDE 设置中切换编译器。

首先,您应该选择 ajc 作为您的项目编译器(在 Java 编译器页面上的 Use 编译器字段)。

如果您想要同时使用 javac,请打开“Delegate to Javac”选项。如果启用此选项,那么没有 aspect 的模块将被编译为 javac (通常更快),并且包含 aspect 的模块将用 ajc 编译。(如果此选项为 off,则 ajc 用于项目中的所有模块。)

您可以在各个模块级别对编译器(ajc 和 javac)之间的任务分配进行微调。对于只包含 @Aspect-annotated 的 Java 类(在 .java 文件中)的形式的模块,您可以指定 ajc 仅应用于后编译的编织(weaving)。如果这样做,javac 将用于编译所有源文件,然后 ajc 将其应用于编译的类文件进行编织。因此,整个过程(编译+编织)(compilation + weaving)将花费更少的时间。

如果打开了“Javac代理选项(Delegate to Javac)”,则通过在与模块关联的 AspectJ facet 中打开相应的选项来启用 ajc 的编译后编织模式。

请注意,您不应为包含代码样式 aspect 的模块(在 .aj 文件中定义的 aspect)启用此选项。

控制ajc aspectpath

您可以为每个模块分别控制 ajc aspectpath 选项,请参阅在模块级别对 ajc 的使用进行微调。

由于将适当配置的 Maven 项目导入 IntelliJ IDEA,可以自动设置该 aspectpath 模块。

选择ajc作为项目编译器并指定其设置

  1. 打开“设置(Settings)”对话框(例如,Ctrl+Alt+S)。
  2. 在对话框的左侧部分,在搜索框中键入 compiler。然后,在搜索框下方的窗格中选择 Java Compiler。
  3. 在对话框右侧部分打开的 Compiler>Java Compiler 页面中:
    1. 从“使用编译器(Use compiler)”列表中选择 Ajc。
    2. 如有必要,请指定字节码版本。(大致来说,这些是最低目标 JVM 版本。)
    3. 在 Path to Ajc compiler 字段中指定编译器的路径。您可以在该字段中键入路径,或单击 并在相应的对话框中选择必要的文件。(您需要的 aspectjtools.jar 文件位于 <AspectJ installation directory>\lib 中)
    4. 如果需要,请指定要在 "命令行参数(Command line parameters)" 字段中传递给编译器的命令行选项。您可以在该字段中正确输入参数,或者单击 以打开文本输入区域较大的命令行参数对话框。
    5. 点击“测试(Test)”以检查指定的设置是否正确。
    6. 如果要使用 javac 编译不包含 aspect 的模块,请选中“委派到 javac(Delegate to Javac)”复选框。需要注意的是,ajc 和 javac 之间的任务分配可以在各个模块的级别进行微调。
  4. 在“设置(Settings)”对话框中单击“确定”。

在模块级别上微调ajc的使用

为了能够调整 ajc 在模块级别的使用,您应该添加一个 AspectJ facet 到相应的模块。

完成该操作之后,您可以指定 ajc 仅用于后编译后编织。您也可以指定 aspectpath 模块。

  1. 将 AspectJ facet 添加到感兴趣的模块。
  2. 在“项目结构(Project Structure)”对话框的右侧打开的页面中的“编译器(Compiler)”下,根据需要指定设置(请参见下文)。
  3. 如果只想使用 ajc 来编织已编译的类文件(本例中的源代码是用 javac 编译的),请选中“编译后编织模式(Post-compile weave mode)”复选框。重要提示:如果模块包含 .aj 文件,请不要选中此复选框。
  4. 为了形成 aspectpath 模块:
    • 使用 (Alt+Insert)添加库和其他模块。在打开的对话框中选择必要的库和模块。(建议选择该模块的相关性。)
    • 使用  (Alt+Delete)从列表中删除选定的项目。
    • 使用 (Alt+Up)将所选项目在列表中向上移动一行。
    • 使用 (Alt+Down)将所选项目在列表中向下移动一行。
  5. 在“项目结构(Project Structure)”对话框中单击“确定”。
IntelliJ IDEA使用Push ITD In重构
IntelliJ IDEA构建工具:Ant
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

IntelliJ IDEA的一般准则

什么是IntelliJ IDEA项目

使用IntelliJ IDEA的意图行为

IntelliJ IDEA使用运行/调试配置

特定于VCS的程序

IntelliJ IDEA语言和特定框架指南

IntelliJ IDEA的数据库和SQL功能

IntelliJ IDEA使用之JavaServer Faces(JSF)

IntelliJ IDEA:分析PHP应用程序的性能

IntelliJ IDEA:调试PHP应用程序

IntelliJ IDEA:适用于PHP的Google App Engine

IntelliJ IDEA更多内容

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }