ткачество .aj файлов в существующие скомпилированные исходники javac - PullRequest
1 голос
/ 16 ноября 2011

Я пытаюсь использовать javac для компиляции набора java-файлов в файлы .class, а затем впоследствии использую iajc для компиляции и переплетения всех аспектов. Мой муравей build.xml выглядит так.

Компилируемая часть:

<target name="compile" depends="init" description="compile the source ">
    <!-- Compile the java code from ${src} into ${target} -->
    <javac srcdir="${src}" destdir="${target}" debug="true">
        <classpath refid="project.class.path" />
    </javac>
</target>

iajc часть:

<target name="aspects">
    <mkdir dir="dist"/>     
    <iajc source="1.6" target="${asptarget}">
        <inpath>
            <pathelement location="${target}"/>
        </inpath>
        <sourceroots>
            <fileset dir="${src}">
                <include name="**/*.aj"/>
            </fileset>
        </sourceroots>
         <classpath>
              <pathelement location="${aspectj.home}/lib/aspectjrt.jar"/>
        </classpath>
    </iajc>
</target>

Судя по сообщению об ошибке, я не понимаю это правильно. Исходные корни не правы! Как я могу скомпилировать только файлы .aj с aspectj, а затем выполнить двоичное переплетение файлов классов и скомпилированных файлов .aj? Возможно ли это без перекомпиляции всех исходных java-источников?

1 Ответ

1 голос
/ 18 ноября 2011

Если вы хотите использовать обычный компилятор для сборки .java-файлов и iajc для сборки .aj-файлов, вы делаете это:

<target name="aspects" depends="compile" description="build binary aspects">
    <fileset id="ajFileSet" dir="${src}" includes="**/*.aj"/>
    <pathconvert pathsep="${line.separator}" property="ajFiles" refid="ajFileSet"/>
    <echo file="${src}/aj-files.txt">${ajFiles}</echo>

    <iajc source="1.6" target="${asptarget}">
        <argfiles>
            <pathelement location="${src}/aj-files.txt"/>
        </argfiles>

        <classpath>             
            <pathelement path="${target}"/>
            <fileset dir="lib" includes="**/*.jar"/>
        </classpath>
         <classpath>
              <pathelement location="${aspectj.home}/lib/aspectjrt.jar"/>
        </classpath>
    </iajc>
</target>

Отлично работает, создавая файл, содержащий список .aj-файлови составление их.Затем вы можете использовать во время выполнения ИЛИ бинарное плетение для завершения процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...