Ответ 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