Gradle编译项目之外的依赖项

时间:2017-09-09 19:30:08

标签: java android gradle android-gradle grpc-java

我的应用程序有一个前端和后端存储库。后端用Go编写,通过gRPC提供API。生成的gRPC Java文件最终位于backend-repo/proto-gen/java/(所以backend-repo/proto-gen/java/com/myApp/Users.java)。

在我的前端android repo中,我已经将后端repo子模块化到一个名为server的文件夹中。我想修改我的build.gradle以从后端编译.java文件。

android-repo/
    app/
        build.gradle
    server/proto-gen/java/com/myApp/
        Users.java
        AnotherService.java

我对Android开发很陌生,并且正在努力找出正确的方法。

这是我app/build.gradle的摘录,但由于无法找到包com.google.protobuf而失败。

task compileGrpc (type: JavaCompile) {
    source = fileTree(dir: '../server/proto-gen/java/', include: '**/*.java')
    destinationDir = file('build/classes')
    classpath = files('../server/proto-gen/java/')
    options.compilerArgs = ["-sourcepath", "$projectDir/../server/proto-gen/java/"]
}
dependencies {
    compile 'com.google.protobuf:protobuf-java:3.0.0-alpha-2'
    compileGrpc.execute()
}

2 个答案:

答案 0 :(得分:0)

您可以添加依赖项,例如

dependencies {
        classpath files('server/proto-gen/java/com/myApp/')
    }

这将接受相对路径。

答案 1 :(得分:0)

只需包含项目src源集的路径,就可以在编译中包含它们:

android {
    ...
    sourceSets {
        main {
            java.srcDirs = [java.srcDirs, 'server/proto-gen/java']
        }
    }
}

您将能够在右侧的Android View / Project Explorer中看到src文件/目录,并直接编辑文件。