使用 AspectJ/Spring 引导设置 Spring Tool Suite 4(缺少 m2e 连接器)

Setting up Spring Tool Suite 4 with AspectJ/Spring Boot (m2e connector missing)

我使用的是最新版本的 STS,目前是 4.11。我正在构建一个新项目并尝试让 AspectJ CTW 与 Spring Boot 一起工作。我有一些单元测试来检查@Async 方法调用的各个方面。有趣的是,单元测试通过 maven 全新安装通过,但通过 STS 构建时却没有。

我认为原因是 AJDT 插件或 AJDT 配置器插件不工作,因为我看到这个错误:

Plugin execution not covered by lifecycle configuration:
  dev.aspectj:aspectj-maven-plugin:1.13.M3:compile
  (execution: default, phase: compile)  

我正在使用具有这些设置的最新 aspectj maven 插件。

<plugin>
<groupId>dev.aspectj</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.13.M3</version>
<configuration>
  <source>${maven.compiler.source}</source>
  <target>${maven.compiler.target}</target>
  <complianceLevel>${maven.compiler.target}</complianceLevel>
  <encoding>${project.build.sourceEncoding}</encoding>
  <XnoInline>true</XnoInline>
  <aspectLibraries>
    <aspectLibrary>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
    </aspectLibrary>
  </aspectLibraries>
</configuration>
<executions>
  <execution>
    <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>

并且我尝试安装了这两个软件安装:

设置此设置似乎总是很痛苦。有没有人设法用 Java 11 做到这一点?

AspectJ 开发工具 (AJDT)

我不使用 STS,但主要使用 IntelliJ IDEA,如果是 Eclipse,则为 Java 开发人员使用纯 Eclipse。前段时间准备了Eclipse 2021-03的AJDT新版本,2021-06貌似还在用,开发AspectJ 1.9.7.

尝试从 aspectj.dev 下载最新的快照: https://aspectj.dev/maven/org/eclipse/ajdt/org.eclipse.ajdt.releng/2.2.4-SNAPSHOT/

在撰写本文时,最新快照是: https://aspectj.dev/maven/org/eclipse/ajdt/org.eclipse.ajdt.releng/2.2.4-SNAPSHOT/org.eclipse.ajdt.releng-2.2.4-20210509.044425-2.zip

抱歉,我无法为您提供常规的 Eclipse 更新站点,但在为 AspectJ 做贡献时,我无法访问 Eclipse 基础结构。首席开发人员很忙,所以我自己的 Web 服务器是为您提供 AJDT 的最简单方法。 ZIP 存档的大小约为 15 MB。您可以按照 here 所述将其作为虚拟更新站点导入 Eclipse(滚动到“为 Eclipse 安装 AJDT(AspectJ 开发工具)IDE”)。

aspectj.dev

的 AspectJ Maven 插件

一些小消息:昨天发布了AspectJ Maven 1.13版本。与 1.13.M3 相比,它有一些改进,最显着的是 1.13

  • 默认依赖AspectJ 1.9.8.M1(当然你也可以使用1.9.7,但是1.9.8.M1支持--release N编译开关),
  • 将语言级别 17 识别为源、目标、合规级别和发布参数的有效参数,即它可以与最新的 AspectJ 1.9.8 快照一起使用,以便实验性地编译 Java 17-EA,
  • 有编译器级别设置的优先规则,即如果设置了合规级别,则不需要源和目标(它们是相同的),如果设置了源和目标,则不再需要指定合规级别.在你必须设置所有三个之前,IMO 总是一个错误。此外,如果您将发布设置为交叉编译,则所有源、目标和合规级别都将被忽略。

可以在插件的 GitHub site.

上找到更多信息

更新: 我找到了一个 m2e connector for AJDT,由 Miika Vesti 维护,供他私人使用。起初它对 dev.aspectj groupID 不起作用,因为他忘记将更新推送到 Eclipse 更新站点,但我与他取得了联系,现在它起作用了。请参阅项目的自述文件以获取更多信息。您可以使用 Eclipse 2020-12 的现有更新站点来安装也适用于 Eclipse 2021-06 的连接器。

连接器需要做更多工作才能正确导入所有 AspectJ Maven 设置,例如它在我停用 Maven Compiler Plugin 的一些项目中不起作用,因为它当前依赖于它处于活动状态并且 source/target 编译器级别之类的东西在那里配置。只有这样,它才会正确导入源和目标目录以及依赖项——最突出的是 Aspectj 运行时库——正确并生成可用的 Eclipse 项目。我正在尝试与 Miika 合作,以便将来使连接器更加自给自足。