使用 AspectJ ITD 编织 JSR 349 注释

Weaving JSR 349 annotation using AspectJ ITD

我有一个像这样的 AspectJ ITD。 @NotNull 注释来自 JSR 349 hibernate 验证器。

import javax.validation.constraints.NotNull;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.DeclareAnnotation;
@Aspect
  public class InterType {

  @DeclareAnnotation("com.package..*")
  @NotNull Object property;

  @DeclareAnnotation("public * com.package.*(..)")
  @NotNull void setProperty() {}

}

我的 Maven AspectJ 插件在编译时编织其他方面。但是ITD不是编织的。

 [INFO] --- aspectj-maven-plugin:1.7:compile (default) @ HRG ---
 [INFO] Showing AJC message detail for messages of types: [error, warning, fail]
 [WARNING] Found @DeclareAnnotation while current release does not support   it (se
 e 'com.package.InterType')
    C:\Users6458\Documents\workspace-sts-3.6.4.RELEASE\Logger\src\main\ja
 va\com\hrg\logger\aspect\InterType.java:9
 public class InterType {
         ^^^^^^^^

我知道我可以使用 AspectJ 的 ITD 机制添加注释。但是这些注释似乎有些不同。我错过了什么?

所以我正在编织一个编译注释和我的源代码。为此需要不同的 AspectJ 配置吗?

应该是这样的依赖吗?

            <weaveDependencies>
                <weaveDependency>
                   <groupId>javax.el</groupId>
                   <artifactId>javax.el-api</artifactId>
                </weaveDependency>
                <weaveDependency>
                   <groupId>org.glassfish.web</groupId>
                   <artifactId>javax.el</artifactId>
                </weaveDependency>
                <weaveDependency>
                   <groupId>org.hibernate</groupId>
                   <artifactId>hibernate-validator-cdi</artifactId>
                </weaveDependency>
                <weaveDependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
                </weaveDependency>
            </weaveDependencies>

这不是您的 pom/versions - @DeclareAnnotation 在 AspectJ 编织器中没有支持实现。它被添加为以纯 java 语法执行 declare @methoddeclare @fielddeclare @typedeclare @constructor 的可能方法,但它从未完成。在编织者支持之前,您将始终收到该消息指示。