【问题标题】:Android Gradle annotationProcessor not available in parent moduleAndroid Gradle annotationProcessor 在父模块中不可用
【发布时间】:2017-05-05 21:20:13
【问题描述】:

我有以下设置:

ProjectA build.gralde:

dependencies {
    compile (project(':ProjectB'))
}

ProjectB build.gradle:

dependencies {
    annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.5'
    compile "com.google.auto.value:auto-value:1.3"
    annotationProcessor "com.google.auto.value:auto-value:1.3"
}

在 ProjectA 中实现 Parcelable 的 SomeClass

@AutoValue
public abstract class SomeClass implements Parcelable {
...
}

AutoValue 不会在 AutoValue_SomeClass 中生成任何 Parcelable 相关的方法。

但是,如果我将 auto-value-parcel annotationProcessor 直接包含到 ProjectA 中,问题就解决了。

ProjectA build.gralde:

dependencies {
    compile (project(':projectB'))
    annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.5'
}

谁能解释auto-value-parcelannotationProcessor 是如何从ProjectA 中排除的?

【问题讨论】:

  • 如果你把annotationProcessor auto-value... 之前 annotationProcessor auto-value-parcel都放在模块B中怎么办?
  • 不走运,几乎尝试了订购这 3 件商品的所有组合

标签: android gradle auto-value


【解决方案1】:

annotationProcessor 依赖项不会导出到其他项目。这些也不与库一起导出。

AutoValue 本身有效,因为您使用 compile 依赖项定义了它。这也是你不应该做的事情。所以更好的依赖设置看起来像......

项目B

dependencies {
    provided "com.jakewharton.auto.value:auto-value-annotations:$autoValueVersion"
    annotationProcessor "com.google.auto.value:auto-value:$autoValueVersion"
    annotationProcessor "com.ryanharter.auto.value:auto-value-parcel:$autoValueParcelVersion"
}

项目A

dependencies {
    compile project(':ProjectB')
    provided "com.jakewharton.auto.value:auto-value-annotations:$autoValueVersion"
    annotationProcessor "com.google.auto.value:auto-value:$autoValueVersion"
    annotationProcessor "com.ryanharter.auto.value:auto-value-parcel:$autoValueParcelVersion"
}

但不在所有项目上运行annotationProcessor 会更好。

【讨论】:

  • 感谢清晰的解释!我得出了同样的结论,即 annotationProcessor 仅在其模块范围内有效。我尝试在 annotationProcessor 上搜索任何文档,但找不到任何东西。您介意在 annotationProcessor 上分享任何资源/文档吗?
猜你喜欢
  • 2020-10-21
  • 1970-01-01
  • 2018-11-04
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-02
相关资源
最近更新 更多