diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/AndroidClientCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/AndroidClientCodegen.java index 3da9c6344a4..62fc70efdea 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/AndroidClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/AndroidClientCodegen.java @@ -13,6 +13,7 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi protected String artifactVersion = "1.0.0"; protected String projectFolder = "src/main"; protected String sourceFolder = projectFolder + "/java"; + protected Boolean useAndroidMavenGradlePlugin = true; public CodegenType getTag() { return CodegenType.CLIENT; @@ -52,6 +53,9 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi additionalProperties.put("artifactVersion", artifactVersion); supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); + additionalProperties.put("useAndroidMavenGradlePlugin", useAndroidMavenGradlePlugin); + + supportingFiles.add(new SupportingFile("settings.gradle.mustache", "", "settings.gradle")); supportingFiles.add(new SupportingFile("build.mustache", "", "build.gradle")); supportingFiles.add(new SupportingFile("manifest.mustache", projectFolder, "AndroidManifest.xml")); supportingFiles.add(new SupportingFile("apiInvoker.mustache", diff --git a/modules/swagger-codegen/src/main/resources/android-java/build.mustache b/modules/swagger-codegen/src/main/resources/android-java/build.mustache index 80c0d375ddb..62a56bf066e 100644 --- a/modules/swagger-codegen/src/main/resources/android-java/build.mustache +++ b/modules/swagger-codegen/src/main/resources/android-java/build.mustache @@ -1,9 +1,17 @@ +{{#useAndroidMavenGradlePlugin}} +group = '{{groupId}}' +project.version = '{{artifactVersion}}' +{{/useAndroidMavenGradlePlugin}} + buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.2.2' + {{#useAndroidMavenGradlePlugin}} + classpath 'com.github.dcendents:android-maven-plugin:1.2' + {{/useAndroidMavenGradlePlugin}} } } @@ -13,7 +21,11 @@ allprojects { } } + apply plugin: 'com.android.library' +{{#useAndroidMavenGradlePlugin}} +apply plugin: 'com.github.dcendents.android-maven' +{{/useAndroidMavenGradlePlugin}} android { compileSdkVersion 22 @@ -22,6 +34,17 @@ android { minSdkVersion 14 targetSdkVersion 22 } + + // Rename the aar correctly + libraryVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null && outputFile.name.endsWith('.aar')) { + def fileName = "${project.name}-${variant.baseName}-${version}.aar" + output.outputFile = new File(outputFile.parent, fileName) + } + } + } } @@ -37,7 +60,12 @@ dependencies { compile "com.google.code.gson:gson:$gson_version" compile "org.apache.httpcomponents:httpcore:$httpclient_version" compile "org.apache.httpcomponents:httpclient:$httpclient_version" - compile "org.apache.httpcomponents:httpmime:$httpclient_version" + compile ("org.apache.httpcomponents:httpcore:$httpcore_version") { + exclude(group: 'org.apache.httpcomponents', module: 'httpclient') + } + compile ("org.apache.httpcomponents:httpmime:$httpmime_version") { + exclude(group: 'org.apache.httpcomponents', module: 'httpclient') + } testCompile "junit:junit:$junit_version" } @@ -48,7 +76,18 @@ afterEvaluate { task.dependsOn variant.javaCompile task.from variant.javaCompile.destinationDir task.destinationDir = project.file("${project.buildDir}/outputs/jar") - task.archiveName = "${project.name}-${variant.baseName}.jar" + task.archiveName = "${project.name}-${variant.baseName}-${version}.jar" artifacts.add('archives', task); } -} \ No newline at end of file +} + +{{#useAndroidMavenGradlePlugin}} +task sourcesJar(type: Jar) { + from android.sourceSets.main.java.srcDirs + classifier = 'sources' +} + +artifacts { + archives sourcesJar +} +{{/useAndroidMavenGradlePlugin}} \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/android-java/settings.gradle.mustache b/modules/swagger-codegen/src/main/resources/android-java/settings.gradle.mustache new file mode 100644 index 00000000000..b8fd6c4c41f --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-java/settings.gradle.mustache @@ -0,0 +1 @@ +rootProject.name = "{{artifactId}}" \ No newline at end of file diff --git a/samples/client/petstore/android-java/build.gradle b/samples/client/petstore/android-java/build.gradle index 80c0d375ddb..26a00d90da8 100644 --- a/samples/client/petstore/android-java/build.gradle +++ b/samples/client/petstore/android-java/build.gradle @@ -1,9 +1,15 @@ +group = 'io.swagger' +project.version = '1.0.0' + buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.2.2' + + classpath 'com.github.dcendents:android-maven-plugin:1.2' + } } @@ -13,7 +19,9 @@ allprojects { } } + apply plugin: 'com.android.library' +apply plugin: 'com.github.dcendents.android-maven' android { compileSdkVersion 22 @@ -22,6 +30,17 @@ android { minSdkVersion 14 targetSdkVersion 22 } + + // Rename the aar correctly + libraryVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null && outputFile.name.endsWith('.aar')) { + def fileName = "${project.name}-${variant.baseName}-${version}.aar" + output.outputFile = new File(outputFile.parent, fileName) + } + } + } } @@ -37,7 +56,12 @@ dependencies { compile "com.google.code.gson:gson:$gson_version" compile "org.apache.httpcomponents:httpcore:$httpclient_version" compile "org.apache.httpcomponents:httpclient:$httpclient_version" - compile "org.apache.httpcomponents:httpmime:$httpclient_version" + compile ("org.apache.httpcomponents:httpcore:$httpcore_version") { + exclude(group: 'org.apache.httpcomponents', module: 'httpclient') + } + compile ("org.apache.httpcomponents:httpmime:$httpmime_version") { + exclude(group: 'org.apache.httpcomponents', module: 'httpclient') + } testCompile "junit:junit:$junit_version" } @@ -48,7 +72,16 @@ afterEvaluate { task.dependsOn variant.javaCompile task.from variant.javaCompile.destinationDir task.destinationDir = project.file("${project.buildDir}/outputs/jar") - task.archiveName = "${project.name}-${variant.baseName}.jar" + task.archiveName = "${project.name}-${variant.baseName}-${version}.jar" artifacts.add('archives', task); } -} \ No newline at end of file +} + +task sourcesJar(type: Jar) { + from android.sourceSets.main.java.srcDirs + classifier = 'sources' +} + +artifacts { + archives sourcesJar +} diff --git a/samples/client/petstore/android-java/settings.gradle b/samples/client/petstore/android-java/settings.gradle new file mode 100644 index 00000000000..6a6796bf9fe --- /dev/null +++ b/samples/client/petstore/android-java/settings.gradle @@ -0,0 +1 @@ +rootProject.name = "swagger-android-client" \ No newline at end of file