无法访问生成的java文件

时间:2017-07-16 06:40:00

标签: java android-studio gradle grpc

我的项目使用gRPC,它会在生成的文件夹中生成一个文件。

enter image description here

这是我模块的build.gradle。

apply plugin: 'java'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile 'io.grpc:grpc-okhttp:1.4.0'
    compile 'io.grpc:grpc-protobuf-lite:1.4.0'
    compile 'io.grpc:grpc-stub:1.4.0'
    compile 'javax.annotation:javax.annotation-api:1.2'
}

sourceCompatibility = "1.7"
targetCompatibility = "1.7"


apply plugin: 'com.google.protobuf'
def grpcVersion = '1.4.0' // CURRENT_GRPC_VERSION
protobuf {
    protoc {
        artifact = 'com.google.protobuf:protoc:3.3.0'
    }
    plugins {
        grpc {
            artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}"
        }
    }
    generateProtoTasks {
        all()*.plugins {
            grpc {
                // To generate deprecated interfaces and static bindService method,
                // turn the enable_deprecated option to true below:
                option 'enable_deprecated=false'
            }
        }
    }
}


// Inform IntelliJ projects about the generated code.
apply plugin: 'idea'

idea {
    module {
        // Not using generatedSourceDirs because of
        // https://discuss.gradle.org/t/support-for-intellij-2016/15294/8
        sourceDirs += file("${projectDir}/build/generated/source/proto/main/java");
        sourceDirs += file("${projectDir}/build/generated/source/proto/main/grpc");
    }
}

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您必须将此文件夹添加到源集。 以下应该有效:

sourceSets {
   generated{
        java.srcDir "${projectDir}/build/generated/source/proto/main/java"
   }
}

Here是一个用于自定义源集的综合文档。

答案 1 :(得分:1)

我发现了。我的iml文件包含文件夹但也排除了它。我认为排除优先,所以我必须重新考虑<excludeFolder>元素。

enter image description here