如何在PluginExport/Build中启用AspectJ编译器



我的第一个问题是:"导出可部署插件和片段"功能是否使用与产品导出功能相同的通用构建脚本?

我的主要问题是:为什么Export可部署插件和片段生成一个没有.class文件的jar?

在我的项目中,我们使用装载时间编织,在项目成功出口后,不应用编织。原因是我导出的aspectj插件没有.class文件。

经过大量研究,如何进行aspectj感知导出的方法是定义aspectj编译器适配器。这个编译器似乎已加载并执行,但结果并没有.class文件。

有人知道少了什么?

build.properties:

compilerAdapter=org.eclipse.ajdt.core.ant.AJDT_AjcCompilerAdapter
sourceFileExtensions=*.java, *.aj
source.. = src/
output.. = bin/
bin.includes = META-INF/,
           .

编辑:如果我右键点击项目,如果我按下"生成蚂蚁文件",它会在@dot-target:中生成类似的内容

<javac destdir="${build.result.folder}/@dot" failonerror="${javacFailOnError}" verbose="${javacVerbose}" debug="${javacDebugInfo}" includeAntRuntime="no" bootclasspath="${bundleBootClasspath}" source="${bundleJavacSource}" target="${bundleJavacTarget}" compiler="org.eclipse.ajdt.core.ant.AJDT_AjcCompilerAdapter"       >
        <compilerarg line="${compilerArg}" compiler="${build.compiler}"/>
        <classpath refid="@dot.classpath" />
        <src path="src/"            />
        <exclude  name="META-INF/MANIFEST.MF        ."          />
        <compilerarg value="@${basedir}/javaCompiler...args" compiler="org.eclipse.ajdt.core.ant.AJDT_AjcCompilerAdapter"           />
        <compilerarg line="-log &apos;${build.result.folder}/@dot${logExtension}&apos;" compiler="org.eclipse.ajdt.core.ant.AJDT_AjcCompilerAdapter"            />
    </javac>

我认为这看起来是正确的,AJDT编译器已经设置好了。如果此时在属性文件中没有设置"compilerAdapter=org.eclipse.ajdt.core.ant.AJTT_AJCompilerAdapter",那么将使用eclipse编译器。

在运行这个生成的buildskript之后(我认为"导出可部署插件…"也会这样做),我得到的唯一javac输出是:testTestAspect.aj skipped - don't know how to handle it

我找到了这个问题的解决方案。AspectJ编译器似乎还没有启动。在src/中放入Dummy.java文件后,AspectJ编译器会尝试编译所有*.aj文件。没有Dummy.java就不行!

在这个步骤之后,我看到了更多的javac登录。我看到了jre/lib。jar在目标类路径中丢失的位置。所以我在build.properties文件中添加了:

compilerArg=-aspectpath ${bootclasspath}

bootclasspath是生成的构建脚本中的一个变量,该脚本包含所有这些标准的javajar。

这种奇怪的行为花了我很多时间,希望有人能从中受益。

最新更新