首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓级annotationProcessor在父模块中不可用

安卓级annotationProcessor在父模块中不可用
EN

Stack Overflow用户
提问于 2017-05-05 21:20:13
回答 1查看 2.3K关注 0票数 4

我有以下设置:

ProjectA build.gralde:

代码语言:javascript
复制
dependencies {
    compile (project(':ProjectB'))
}

ProjectB build.gradle:

代码语言:javascript
复制
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"
}

以及正在实现Parcelable的SomeClass在ProjectA中的应用

代码语言:javascript
复制
@AutoValue
public abstract class SomeClass implements Parcelable {
...
}

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

但是,如果我将自动值包annotationProcessor直接包含到ProjectA中,问题就解决了.

ProjectA build.gralde:

代码语言:javascript
复制
dependencies {
    compile (project(':projectB'))
    annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.5'
}

有人能解释auto-value-parcel annotationProcessor是如何被ProjectA排除在外的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-11 14:43:03

annotationProcessor依赖项不会导出到其他项目。此外,它们也不是通过库导出的。

AutoValue本身可以工作,因为您用一个compile依赖项来定义它。这也是你不该做的事。所以一个更好的依赖设置看起来就像..。

ProjectB

代码语言:javascript
复制
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"
}

ProjectA

代码语言:javascript
复制
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会更好。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43813900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档