Проблема заключается в настройке AspectJ Maven и Maven Compiler. Мои POM для AspectJ обычно выглядят немного иначе, чем ваши (еще несколько настроек), но вот ваши с минимальными изменениями, чтобы заставить его работать:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>aspect-tutorial</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<maven.compiler.plugin.version>3.5.1</maven.compiler.plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.13</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.11</version>
<configuration>
<complianceLevel>1.7</complianceLevel>
<source>1.7</source>
<target>1.7</target>
</configuration>
<executions>
<execution>
<!-- IMPORTANT -->
<phase>process-sources</phase>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin.version}</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<!-- IMPORTANT -->
<useIncrementalCompilation>false</useIncrementalCompilation>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<mainClass>com.pkg.MainApp</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
Посмотрите, как установить инкрементную компиляцию на false
для компилятора Maven? Это происходит из-за старой ошибки (все еще не исправленной), которая фактически инвертирует переключатель, поэтому для того, чтобы инкрементная компиляция работала, вы должны «деактивировать» ее. Очень странно.
Вам также нужно определить выполнение для фазы process-sources
для AspectJ Maven.
Кроме того, я обновился до AspectJ Maven 1.11 и, следовательно, до AspectJ runtime 1.8.13.
Я также добавил плагин Maven Exec, чтобы легко доказать, что он работает сейчас. Просто позвоните mvn clean compile exec:java
и проверьте вывод:
(...)
[INFO] --- aspectj-maven-plugin:1.11:compile (default) @ aspect-tutorial ---
[INFO] Showing AJC message detail for messages of types: [error, warning, fail]
[INFO]
[INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ aspect-tutorial ---
[INFO] Nothing to compile - all classes are up to date
(...)
[INFO] --- exec-maven-plugin:1.4.0:java (default-cli) @ aspect-tutorial ---
Yeeha
Print Hello...
(...)
В противном случае я поддерживаю то, что сказал Нандор: убедитесь, что вы используете плагины AspectJ для Eclipse или IDEA, если вы также хотите запускать свой Java-код с расширенными аспектами из IDE.