Как включить AspectJ Compiler в PluginExport/Build
Мой первый вопрос: использует ли функция "Экспорт развертываемых подключаемых модулей и фрагментов" тот же универсальный сценарий сборки, что и функция экспорта продукта?
Мой основной вопрос: почему развертываемые плагины и фрагменты экспорта генерируют jar без файлов.class?
В моем проекте мы используем ткачество по времени загрузки, а после успешного экспорта проекта ткачество не применяется. Причина в том, что мои экспортированные плагины 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/,\
.
Редактировать: если я щелкну правой кнопкой мыши по проекту и нажму "Создать файл муравья", он сгенерирует что-то вроде этого в цели @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 '${build.result.folder}/@dot${logExtension}'" 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 ответ
Я нашел решение этой проблемы. Кажется, компилятор AspectJ не запущен. После сдачи Dummy.java
Файл в src / AspectJ Compiler пытается скомпилировать все *.aj файлы. Без Dummy.java это не так!
После этого шага я видел больше регистрации javac. И я видел jre/lib..*. Jar-файлы, которые отсутствовали в пути к классам цели. Поэтому я добавил в файл build.properties:
compilerArg=-aspectpath ${bootclasspath}
bootclasspath - это переменная в сгенерированном скрипте сборки, которая содержит все эти стандартные java-файлы.
Это странное поведение заняло у меня много времени, надеюсь, кому-то это поможет.