我将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替换为compileOnlycompile,但是随后未生成带有@Value.Immutable注释的接口(interface)的实现。

我该如何运作?

最佳答案

找到了答案。分享以防万一,这对任何人(或将来对我自己)都有帮助。

首先,我必须按照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

10-05 23:16