我使用GitHub的Immutables库进行Android开发,现在我想在后端尝试一下。
在Android中,为了使用该库我需要的是:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// immutable entities generation
provided "org.immutables:value:2.5.5" // for annotations
provided "org.immutables:builder:2.5.5" // for annotations
provided "org.immutables:gson:2.5.5" // for annotations
... other dependencies
}
当我尝试将上述依赖项复制到我的Java项目的build.gradle
时,我收到此错误:
Error:(24, 0) Gradle DSL method not found: 'provided()'
我尝试将provided
替换为compileOnly
和compile
,但是不会生成使用@Value.Immutable
注释的接口的实现。
如何让它发挥作用?
答案 0 :(得分:7)
找到答案。分享以防任何人(或将来我自己)都会有所帮助。
首先,我必须按照here所述在IntelliJ中启用注释处理(尽管该选项现在位于Settings > Build, Execution, Deployment > Compiler > Annotation Processors
)。
之后,以下代码开始实际生成实现:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// immutable entities generation
compile "org.immutables:value:2.5.5" // for annotations
compile "org.immutables:builder:2.5.5" // for annotations
compile "org.immutables:gson:2.5.5" // for annotations
... other dependencies
}
但是,我仍然无法自动将实现导入源文件。
为了允许发现生成的类,我必须右键单击generated
包中的main
文件夹,然后Mark Directory As > Generated Sources Root
。
答案 1 :(得分:3)
我无法添加评论(回复率太低),但是对于以后的读者,我想扩展Vasiliy answer。
就我而言(版本5.2.1中的渐变包装器),以下代码自动神奇地发现了生成的源:
dependencies {
def immutablesVersion = "2.8.2"
annotationProcessor "org.immutables:value:$immutablesVersion" // <--- this is important
compileOnly "org.immutables:value:$immutablesVersion"
}
我不需要在IDE注释处理器选项中进行任何更改,它可以直接使用。