AspectJ ткацкие модули maven

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

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

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

Ответ 1

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

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

В принципе:

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

<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> и aspectj в pom проекта java-parent