使用AspectJ ITD编织JSR 349注释

时间:2015-07-09 13:13:33

标签: hibernate aspectj

我有像这样的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() {}

}

My 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:\Users\476458\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>

1 个答案:

答案 0 :(得分:1)

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