CDI(上下文依赖注入)框架包含了令人敬畏的类javax.enterprise.util.AnnotationLiteral
,它使创建注释实例变得非常容易(特别适用于测试)。
我想在我自己的库中使用该util类。但是因为我的图书馆已经注意到了CDI,我不想拥有所有其他CDI的东西。 幸运的是,AnnotationLiteral不使用除标准java类之外的任何其他类,因此这应该是可能的。
到目前为止,包含AnnotationLiteral的最小库是官方CDI-API
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>1.0</version>
</dependency>
但即使我切断了所有依赖项(通过maven排除),jar也会包含很多其他CDI-API和-SPI内容。
所以我的问题是:是否已经有一些(或多或少官方)(maven)库只包含util.AnnotationLiteral
类,或者至少没有其他东西?
答案 0 :(得分:1)
只要您遵守许可,就可以将source复制到项目中。
如果可以,我会保留包名称,因为CDI最终会成为项目依赖项。我更改软件包的唯一原因是您决定修改源代码,这当然并不意味着您可以删除许可证。
答案 1 :(得分:1)
可以在geronimo api中找到AnnotationLiteral
的Apache许可版本。看起来它与CDI的其他部分没有任何依赖关系。如果您不需要在测试中提供的equals和hashCode实现,您甚至可以直接实现注释接口。这不是很好的风格,但绝对可能。 CDI需要额外的equals和hashCode实现其限定符逻辑。以下是使用jsf ManagedBean
注释的示例:
public static ManagedBean test = new ManagedBean() {
@Override
public String name() {
return "test";
}
@Override
public boolean eager() {
return false;
}
@Override
public Class<? extends Annotation> annotationType() {
return ManagedBean.class;
}
};