0

Ich versuche, ein "Modul" -Projekt, das von swagger-codegen generiert wurde, in mein Android-Projekt zu integrieren.Import Swagger-Codegen-Projekt in bestehende Android-Projekt

Ich habe noch nicht so viel mit Gradle gearbeitet und der Swagger-Codegen erzeugt einen ziemlich chaotischen Build.Gradle aus meiner Sicht.

Ich habe es schwer, eine Dokumentation zu finden, wie man das macht. Und ich fühle mich ein bisschen verloren.

habe ich diese Methode in der FAQ beschrieben

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/ 

I bewertet versucht, die Quelle aus dem Projekt zu kopieren, die von Prahlerei-codegen und fusionieren die beiden gradle Build-Dateien generiert wurde. Ich habe die Junit-Tests entfernt, weil die Junit-Abhängigkeit nicht funktioniert (Implementing Swagger-codegen project - Error:(23, 17) Failed to resolve: junit:junit:4.12). Aber dann bin ich mit einigen Konflikten zwischen den Plugins stecken geblieben?

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

Hier ist der 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' 
} 

Bin ich hier etwas komplett falsch? Was ist der richtige Weg, Swagger-Codegen-Code in mein Projekt zu implementieren?

Antwort

1

Ich habe Schwierigkeiten, eine Dokumentation zu finden, wie man das macht. Und ich fühle mich ein bisschen verloren.

Sie könnten das Android swagger-codegen Beispiel klonen.

(die Junit nicht verwendet, so bin ich nicht sicher, welche Fehler Sie bekam)

Es sei denn, das ist, was Sie mit

Bisher habe ich versucht, die Quelle zu kopieren und fusionieren die beiden gradle Build-Dateien

Um was, frage ich, was zwei Gradle-Dateien? Es sieht so aus, als ob Sie eine Android Gradle-Datei mit einer Java Gradle-Datei verschmolzen haben, was weitere Probleme verursacht, weil Sie ...

Das 'Java' Plugin wurde angewendet, aber es ist nicht kompatibel mit dem Android-Plugins

Welche scheint ziemlich selbsterklärend, wenn Sie diese Zeile haben

apply plugin: 'java' 

Es ist nicht ganz klar, was Sie hier andere versuchen, zu tun als die Ziel Build überprüfen

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

Danke für die tollen Tipps! Ich habe die Frage ein wenig geklärt, was ich mit der Quelle meinte. Aber ich werde mir die Beispielquelle ansehen. – emmanuel2004

+0

Die beiden Build Gradle-Dateien, die ich meine, ist diejenige, die in dem Projekt gefunden wird, dass Swagger-Codegen generiert und die, die in dem ursprünglichen Android-Projekt – emmanuel2004

+1

ich sehe. Ich sehe aus, als hättest du ein Java erzeugt, aber kein Android. –

0

Der schnelle Weg um es zu importieren, war es, das von swagger generierte Projekt zu kompilieren, dann kopiere ich die .jar-Datei in mein Android-Projekt und füge es als Bibliothek hinzu.