我有像这样的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>
答案 0 :(得分:1)
这不是你的pom /版本 - @DeclareAnnotation
在AspectJ编织器中没有后盾实现。它被添加为在纯Java语法中执行declare @method
,declare @field
,declare @type
和declare @constructor
的可能方式,但它从未完成。在织工支持之前,您将始终收到该消息。