Модули Maven для плетения AspectJ

У меня есть проект с несколькими модулями maven, один из которых содержит мои аспекты. Как я могу взять аспекты и сплести несколько модулей maven? Документация для плагина AspectJ Maven немного скудна, и не удалось найти много примеров.

Я попытался поместить плагин aspectj в родительский pom, но, похоже, он не применяет рекомендации для модулей под ним.

Я также попытался указать свойство aspectDirectory, но, похоже, это не оказало никакого влияния. Возможно, я сделал это неправильно?


person Mark    schedule 17.11.2010    source источник


Ответы (1)


Я думаю, что механизм довольно хорошо объяснен на этой странице:

Использование библиотек аспектов

В основном:

Вы помещаете все свои аспекты в один проект, компилируете его с помощью aspectj-maven-plugin, добавляете в этот проект зависимость ко всем проектам, которые хотите вплести, а также добавляете этот конфиг в вплетенные проекты:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.3</version>
    <configuration>
        <aspectLibraries>
            <aspectLibrary>
                <groupId>your.aspects.groupId</groupId>
                <artifactId>your.aspects.artifactId</artifactId>
            </aspectLibrary>
        </aspectLibraries>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>compile</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Уродливая часть: вам нужно добавить эту конфигурацию в каждый проект, поэтому одной из возможностей будет использование родительского pom. К сожалению, он должен быть на том же уровне, что и проект аспектов (поскольку pom не может определить зависимость от проекта ниже него), поэтому у вас будет что-то вроде этого

    ------- root --------
   /                     \
aspects   -------- java-parent ----
         /     /     |      |      \
      java1  java2  java3  java4  java5

или даже вот так

       ------- root ---------
      /                       \
aspect-parent            --- java-parent ---
  /        \            /     |      |      \
aspects1 aspects2     java1  java2  java3  java4 

Вы бы добавили конфигурацию плагина <dependency> и аспекта в pom проекта java-parent.

person Sean Patrick Floyd    schedule 18.11.2010