2017-06-27 5 views
1

私はサービスプロキシを生成しようとしているKotlinにvertxサービスインタフェースを作成しました。しかし、src/maingeneratedディレクトリを生成することを除けば、何もしません。vertex-codegenを使用したKotlinのVert.xサービスプロキシ

src/main/java/amb85/portfolio/package-info.javabuild.gradleから

と設定内容::

@ModuleGen(name = "portfolio", groupPackage = "amb85.portfolio") 
package amb85.portfolio; 

import io.vertx.codegen.annotations.ModuleGen; 

は、私は、次のサービス・インターフェースsrc/main/kotlin/amb85/portfolio/PortfolioService.kt持っ

task generateProxies(type: JavaCompile, group: "build", 
     description: "Generates the Vert.x proxies") { // codegen 
    source = sourceSets.main.java 
    source += sourceSets.main.kotlin 
    classpath = configurations.compile + configurations.compileOnly 
    destinationDir = project.file("${projectDir}/src/main/generated") 
    options.compilerArgs = [ 
      "-proc:only", 
      "-processor", "io.vertx.codegen.CodeGenProcessor", 
      "-Acodegen.output=${project.projectDir}/src/main" 
    ] 
} 

私はその後、./gradlew portfolio:generateProxiesを実行し、何もビーon generatedディレクトリにあります。

vertx-codegenを使用して、Kotlinで書かれたインターフェイスに基づいてサービスプロキシを生成することはできますか?その場合は、どの設定手順が欠けていますか?そうでない場合は、プロキシを生成する他の方法はありますか?さらに良いことに、Javaの生成を避けるか、中間ステップとして使用することで、Kotlinでそれを完全に行う方法はありますか?

+0

Javaの代わりにKotlinソースを持つフォルダに 'package-info.java'を移動してみてください – ledniov

+0

これを試してみましたが、生成されたソースはありません。 – amb85

答えて

0

おそらくgeneratedのソースセットを定義する必要があります。 (あなたはそれを少し適応させる必要がありますので、その唯一のJava用)私は必要なところ、私には、独立したのGradleスクリプトgradle/vertx-codegen.gradleを持って、それが正常に動作します:

sourceSets { 
    generated{ 
     java.srcDir "${projectDir}/src/generated/java" 
    } 
} 

task generateProxies(type: JavaCompile) { 
    group = "build" 
    description = "Generate Vert.x service proxies" 

    source = sourceSets.main.java 
    classpath = configurations.compile 
    options.compilerArgs = [ 
     "-proc:only", 
     "-processor", "io.vertx.codegen.CodeGenProcessor", 
     "-AoutputDirectory=${projectDir}/src/main" 
    ] 
    destinationDir = file("${projectDir}/src/generated/java") 
} 

compileJava{ 
    dependsOn generateProxies 
    source += sourceSets.generated.java 
} 

clean { 
    delete += sourceSets.generated.java.srcDirs 
} 

・ホープ、このことができます!

0

kotlinでvertxサービスプロキシを使用する最も簡単な方法は、kaptとvertx-codegen processorの依存関係を使用することです。

apply plugin: 'kotlin-kapt' 

dependencies { 

    kapt "io.vertx:vertx-codegen:$vertx_version:processor" 
    compileOnly "io.vertx:vertx-codegen:$vertx_version" 

    // other deps go here 
} 

これまでに必要な他には何も:あなたのbuild.gradle次を追加する必要は

関連する問題