0

swagger-codegenによって生成された「モジュール」プロジェクトをAndroidプロジェクトに統合しようとしています。swagger-codegenプロジェクトを既存のAndroidプロジェクトにインポート

以前はgradleでそれほど作業していませんでした。そして、swagger-codegenは私の視点からはかなり乱雑なbuild.gradleを作成します。

私はこれを行う方法に関するドキュメントを見つけるのは難しいです。そして私は少し失われたように感じます。

は私が闊歩-コード生成によって生成されたプロジェクトからソースをコピーして、2つのGradleのビルドファイルをマージしようとした FAQ

mvn clean package 
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \ 
-i http://petstore.swagger.io/v2/swagger.json \ 
-l java --library=okhttp-gson \ 
-o /var/tmp/java/okhttp-gson/ 

ので料理に記載し、この方法を使用していました。私はJunit依存関係を働かせることができなかったので、Junitテストを削除しました(Implementing Swagger-codegen project - Error:(23, 17) Failed to resolve: junit:junit:4.12)。しかし、私はプラグイン間のいくつかの競合に立ち往生している?ここで

The 'java' plugin has been applied, but it is not compatible with the Android plugins. 

はbuild.gradleです:

import static jdk.nashorn.internal.runtime.regexp.joni.ApplyCaseFold.apply 

apply plugin: 'idea' 
apply plugin: 'eclipse' 

group = 'io.swagger' 
version = '1.0.0' 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.1.2' 
     // classpath 'com.android.tools.build:gradle:1.5.+' 
     classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3' 
    } 
} 

repositories { 
    jcenter() 
    maven { url 'http://repo1.maven.org/maven2' } 
} 


if(hasProperty('target') && target == 'android') { 

    apply plugin: 'com.android.library' 
    apply plugin: 'com.github.dcendents.android-maven' 

    android { 
     compileSdkVersion 23 
     buildToolsVersion '23.0.2' 
     defaultConfig { 
      minSdkVersion 14 
      targetSdkVersion 23 
     } 
     compileOptions { 
      sourceCompatibility JavaVersion.VERSION_1_7 
      targetCompatibility JavaVersion.VERSION_1_7 
     } 

     // Rename the aar correctly 
     libraryVariants.all { variant -> 
      variant.outputs.each { output -> 
       def outputFile = output.outputFile 
       if (outputFile != null && outputFile.name.endsWith('.aar')) { 
        def fileName = "\u0024{project.name}- \u0024{variant.baseName}-\u0024{version}.aar" 
       output.outputFile = new File(outputFile.parent, fileName) 
      } 
     } 
    } 

    dependencies { 
     provided 'javax.annotation:jsr250-api:1.0' 
    } 
} 

afterEvaluate { 
    android.libraryVariants.all { variant -> 
     def task = project.tasks.create "jar${variant.name.capitalize()}", Jar 
     task.description = "Create jar artifact for ${variant.name}" 
     task.dependsOn variant.javaCompile 
     task.from variant.javaCompile.destinationDir 
     task.destinationDir = project.file("${project.buildDir}/outputs/jar") 
     task.archiveName = "${project.name}-${variant.baseName}-${version}.jar" 
     artifacts.add('archives', task); 
    } 
} 

task sourcesJar(type: Jar) { 
    from android.sourceSets.main.java.srcDirs 
    classifier = 'sources' 
} 

artifacts { 
    archives sourcesJar 
} 

} else { 

apply plugin: 'java' 
apply plugin: 'maven' 

sourceCompatibility = JavaVersion.VERSION_1_7 
targetCompatibility = JavaVersion.VERSION_1_7 

install { 
    repositories.mavenInstaller { 
     pom.artifactId = 'XxxxXxxx' 
    } 
} 

    task execute(type:JavaExec) { 
     main = System.getProperty('mainClass') 
     classpath = sourceSets.main.runtimeClasspath 
    } 
} 

dependencies { 
    compile 'io.swagger:swagger-annotations:1.5.8' 
    compile 'com.squareup.okhttp:okhttp:2.7.5' 
    compile 'com.squareup.okhttp:logging-interceptor:2.7.5' 
    compile 'com.google.code.gson:gson:2.6.2' 
    compile 'joda-time:joda-time:2.9.3' 
    // testCompile 'junit:junit:4.12' 
} 

私が間違ってここに完全な何かをやっていますか?私のプロジェクトにswagger-codegenコードを実装する正しい方法は何ですか?

答えて

1

私はこれを行う方法に関する文書を見つけるのが難しいです。そして私は少し失われたように感じます。

Android swagger-codegenの例をクローンすることができます。

(JUnitのを使用していたので、私はあなたが得たもの、エラーわからない)

それはあなたがこれまでのところ、私はソースをコピーして、2つのGradleをマージしようとした

によって何を意味するかだ場合を除きビルドファイル

どのような2つのGradleファイルがありますか? Android GradleファイルをJava Gradleファイルにマージしたように見えますが、これはもっと問題を引き起こしているようです...

「java」プラグインは適用されていますが、 Androidプラグイン。

この行

apply plugin: 'java' 

を持っている場合それはあなたがビルドターゲットをチェック

if(hasProperty('target') && target == 'android') 
+0

偉大なヒントのおかげで!私は、ソースが意味するものについて少し質問を明確にした。しかし、私は例のソースを見てみましょう。 – emmanuel2004

+0

私が意味する2つのビルドグラデルファイルは、swagger-codegenが生成したプロジェクトにあるものと、元のAndroidプロジェクトにあるものです – emmanuel2004

+1

です。私は、あなたがAndroidのものではなく、Javaのものを生成したように見える –

0

以外に、ここで迅速な方法をやろうとしているか、あまりにもはっきりしていない、かなり自明ですそれをインポートするには、swaggerで生成されたプロジェクトをコンパイルし、.jarファイルをアンドロイドプロジェクトにコピーし、ライブラリとして追加します。

関連する問題