0

我試圖將swagger-codegen生成的「模塊」項目集成到我的Android項目中。將swagger-codegen項目導入到現有的Android項目

以前沒有用過這麼多的工具,而且從我的角度來看,swagger-codegen會創建一個相當混亂的build.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/ 

所以車費我試圖源從由招搖,代碼生成生成的項目複製和合並兩個gradle這個構建文件描述此方法。我刪除了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,所以我不知道你得到了什麼錯誤)

除非那是你的

意思到目前爲止,我試圖複製源和合並兩個gradle這個構建文件

對此,我問,哪兩個Gradle文件?它看起來像你合併了Android Gradle文件與Java Gradle文件,這似乎導致更多的問題,因爲你越來越...

'java'插件已應用,但它不兼容Android插件。

這似乎非常自我解釋當你有這條線

apply plugin: 'java' 

,這不是太清楚你正試圖在這裏做除了檢查構建目標

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

非常感謝您的提示!我澄清了這個問題,關於我的意思是什麼。但我會看看示例源。 – emmanuel2004

+0

這兩個構建gradle文件我的意思是在swagger-codegen生成的項目中找到的那個文件,以及在我看到的原始Android項目 – emmanuel2004

+1

中的文件。我看起來像你生成了一個Java,但不是Android的一個 –

0

的快捷方式是什麼導入它是編譯swagger生成的項目,然後將.jar文件複製到我的android項目,並將其添加爲庫。