0

我正在使用最新版本的 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 做到这一点?

4

1 回答 1

2

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。您可以将其作为虚拟更新站点导入 Eclipse,如此所述(滚动到“为 Eclipse IDE 安装 AJDT(AspectJ 开发工具)”)。

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 站点上找到


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

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

于 2021-07-29T02:00:27.557 回答