2014-10-06 57 views
0

我的第一个问题是:“导出可部署插件和片段”功能是否使用与产品导出功能相同的通用构建脚本?如何在PluginExport中启用AspectJ编译器/构建

我的主要问题是:为什么导出可部署插件和片段生成没有.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/,\ 
      . 

编辑: 如果我rightklick上项目的,如果我按 “生成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编译器已设置。如果此时“属性文件”中未设置“compilerAdapter = org.eclipse.ajdt.core.ant.AJDT_AjcCompilerAdapter”,则会改为eclipse编译器。

后运行此产生buildskript(我认为“导出部署插件......”会做同样的)唯一的javac输出我有是:test\TestAspect.aj skipped - don't know how to handle it

回答

1

我找到了解决这个问题。看来AspectJ编译器没有启动。在src /文件中放入Dummy.java文件后,AspectJ编译器会尝试编译所有* .aj文件。没有Dummy.java它不会!

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

compilerArg=-aspectpath ${bootclasspath} 

引导类路径是在生成构建脚本变量,它包含所有这些标准的Java罐子。

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

相关问题