如何在PluginExport / Build中启用AspectJ Compiler

时间:2014-10-06 11:50:33

标签: eclipse build aspectj pde

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

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

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

经过大量研究后,如何进行方面识别导出是指定义AspectJ编译器适配器。看起来这个编译器已加载并执行,但结果是没有.class文件。

有人有想法丢失了吗?

build.properties:

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

编辑: 如果我右键单击项目,如果按“生成Ant文件”,它会在@dot目标中生成这样的内容:

<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 Compiler已设置好。如果此时未在属性文件中设置“compilerAdapter = org.eclipse.ajdt.core.ant.AJDT_AjcCompilerAdapter”,则会出现eclipse编译器。

运行这个生成的buildskript后(我认为“Export deployable Plugin ...”也会这样做)我唯一得到的javac输出是:test\TestAspect.aj skipped - don't know how to handle it

1 个答案:

答案 0 :(得分:1)

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

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

compilerArg=-aspectpath ${bootclasspath}

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

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