我有以下设置:
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"
}以及正在实现Parcelable的SomeClass在ProjectA中的应用
@AutoValue
public abstract class SomeClass implements Parcelable {
...
}AutoValue不会在AutoValue_SomeClass中生成任何与Parcelable相关的方法。
但是,如果我将自动值包annotationProcessor直接包含到ProjectA中,问题就解决了.
ProjectA build.gralde:
dependencies {
compile (project(':projectB'))
annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.5'
}有人能解释auto-value-parcel annotationProcessor是如何被ProjectA排除在外的吗?
发布于 2017-05-11 14:43:03
annotationProcessor依赖项不会导出到其他项目。此外,它们也不是通过库导出的。
AutoValue本身可以工作,因为您用一个compile依赖项来定义它。这也是你不该做的事。所以一个更好的依赖设置看起来就像..。
ProjectB
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
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会更好。
https://stackoverflow.com/questions/43813900
复制相似问题