剥离内部注释

时间:2020-02-24 13:39:21

标签: java annotations java-annotations gradle-dependencies

我有一个Android库模块,其中一个公共类使用来自外部库的一些注释。注释纯粹是在内部使用的,因此我不想将其公开为API Gradle依赖项,将该依赖项泄漏给客户端,而是将其保留为implementation

但是,由于无法解析注释类,因此注释的存在会对使用我的库的应用程序发出警告。这实际上是可以理解的-公共类包含不在客户端的编译路径上的符号-但是在打包库时是否有办法将注释保留在内部-或被调用的应用程序忽略?注释是RUNTIME个保留注释,因此它们不能在构建步骤或类似步骤中完全去除。

出于说明目的进行设置:

我的图书馆:

  • build.gradle具有implementation com.example.foobar,其中包含@Example注释
  • Foo.java是带有@Example注释的公共类:
@Example(foo = "bar")
public class Foo {
   ...
}
  • my-library中的其他类本身要求注释在运行时出现

某些客户端:

  • build.gradle的{​​{1}}包含类implementation com.example.mylibrary
  • 该应用程序使用Foo个对象,但不需要了解注释,但是在构建注释时会得到:
Foo

如果我将classes.jar(com/example/Foo.class): warning: Cannot find annotation method 'foo()' in type 'Example': class file for com.example.Example not found 的{​​{1}}更改为implementation,则消除了警告,但是应用程序现在将在其构建路径上获得API批注,这是一个内部实施细节。还有另一种方法吗?

0 个答案:

没有答案