AspectJ Maven Plugin Cannot Compile My Project
Answer :
It seems like a known issue http://jira.codehaus.org/browse/MASPECTJ-125
You can fix it by adding the following to your pom file.
<complianceLevel>1.6</complianceLevel>
Update: While the things I said about AspectJ Maven configuration in this answer are all correct, the root cause of the concrete problem at hand - bad Maven dependency management - is described in my other answer. It would be better if that one was the accepted answer and not this one.
- User codelion's hint makes sense, please change your
<compilationLevel>
tag (typo?) - to<complianceLevel>
. - There is no need to downgrade to plugin version 1.6, you can keep 1.7.
- There is also no need to specify the configuration again within the
<execution>
section, the one at plugin level is enough. - Please note that the default AspectJ version in plugin 1.7 is 1.8.2, so maybe your runtime dependency on 1.7.4 works, but if I were you I would upgrade that one too, optimally in sync with the plugin version. It is no hard requirement, but I think it makes sense.
- Maybe you even want to upgrade to the current version AspectJ 1.8.4, in the plugin as well as the runtime. This can also be achieved by adding a dependency to the desired aspectjtools version to the plugin configuration:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.source-target.version>1.8</java.source-target.version> <aspectj.version>1.8.4</aspectj.version> </properties> <build> <pluginManagement> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>aspectj-maven-plugin</artifactId> <version>1.7</version> <configuration> <showWeaveInfo>true</showWeaveInfo> <source>${java.source-target.version}</source> <target>${java.source-target.version}</target> <Xlint>ignore</Xlint> <complianceLevel>${java.source-target.version}</complianceLevel> <encoding>UTF-8</encoding> <verbose>true</verbose> </configuration> <executions> <execution> <!-- IMPORTANT --> <phase>process-sources</phase> <goals> <goal>compile</goal> <goal>test-compile</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjtools</artifactId> <version>${aspectj.version}</version> </dependency> </dependencies> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>aspectj-maven-plugin</artifactId> </plugin> </plugins> </build> <dependencyManagement> <dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${aspectj.version}</version> <scope>runtime</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> </dependency> </dependencies>
Having looked at your Maven project https://github.com/dmitrievanthony/test-aspectj I found out that
- the problem is totally unrelated to AspectJ Maven Plugin,
- the same compilation errors also occur in Maven Compiler Plugin and
- that the root cause of your problem is simply bad dependency management.
Here is a screenshot (full size here) from IntelliJ IDEA's "find class":
As you can see, class LockModeType
is found in 3 (three!) dependencies, one of which contains a version of the class which does not contain the expected enum values. Your code compiles if you remove this dependency.
<dependency> <groupId>org.hibernate</groupId> <artifactId>ejb3-persistence</artifactId> <version>1.0.2.GA</version> </dependency>
Maybe you should clean up your dependencies. You can use the Maven Dependency Plugin with goals like dependency:analyze
and dependency:tree
for that purpose.
Comments
Post a Comment