要解决 aspectjweaver 依赖关系,请添加此存储库:
<repository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
这将使您能够访问 1.8.0.M1 版的 aspectjrt、aspectjweaver 和 aspectjtools。
但是,aspectj-maven-plugin 1.6 版不支持 Java 8。
然而 spring-aspects-4.0.0 依赖于 aspectjweaver 1.8.0.M1 以获得 Java 8 支持。
如果您使用的是 Spring 3.2.6 和 Java 7,则此 aspectj-maven-plugin 配置有效:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.6</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<complianceLevel>1.7</complianceLevel>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
<showWeaveInfo>true</showWeaveInfo>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
您也许可以在 spring-aspects 4.0.0 依赖项中的 aspectjweaver 1.8.0.M1 上插入排除项。这可能允许您将 Spring 4 与 Java 7 以及所有 1.7.4 aspectj* 依赖项一起使用。
为了在 Spring 4/Java 8 项目中应用编译时编织 (CTW),我遇到了以下帖子:
Maven, Scala, Spring, AspectJ
https://weblogs.java.net/blog/fabriziogiudici/archive/2011/07/19/making-lombok-aspectj-and-maven-co-exist
这是我的解决方案:https://github.com/javawerks/homeschool/blob/master/pom.xml
有效!请注意,此解决方案使用 3 aspectj* amigos 的 1.8.0.M1 版本,可在此处找到:http://repo.spring.io/milestone/org/aspectj/
警告:如果您的本地 maven 存储库还没有 maven-antrun-plugin 依赖项,您将收到“can't find * dependency in maven central”错误。要解决此问题,请将依赖项复制到您的主要依赖项元素; mvn 清理编译;删除复制的依赖项;并且 maven-antrun-plugin 应该找到 aspectj* 依赖项。然后执行 'mvn clean install' 并验证 ajc 日志记录。
最后,在 Intellij 中,您将看到此 iajc 属性出现“无法解析符号”错误:
aspectPath="${org.springframework:spring-aspects:jar}"
不用担心,它按预期工作。这是一个 maven-antrun-plugin 命名约定。
总有一天,aspectj-maven-plugin 将更新为支持 Java 8,然后我们就可以恢复正常了。也就是说,showWeaveInfo="true" 日志记录要好得多。
希望这会有所帮助。像我之前的许多人一样,花了很多啤酒才弄清楚这一点。;)