使用 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 @method
、declare @field
、declare @type
和 declare @constructor
的可能方法,但它从未完成。在编织者支持之前,您将始终收到该消息指示。
我有一个像这样的 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 @method
、declare @field
、declare @type
和 declare @constructor
的可能方法,但它从未完成。在编织者支持之前,您将始终收到该消息指示。