1package org.robolectric.gradle 2 3import org.gradle.api.Plugin 4import org.gradle.api.Project 5import org.gradle.api.publish.maven.MavenPublication 6import org.gradle.api.tasks.bundling.Jar 7 8class DeployedRoboJavaModulePlugin implements Plugin<Project> { 9 Closure doApply = { 10 project.apply plugin: "signing" 11 project.apply plugin: "maven-publish" 12 13 task('sourcesJar', type: Jar, dependsOn: classes) { 14 archiveClassifier = "sources" 15 from sourceSets.main.allJava 16 } 17 18 javadoc { 19 failOnError = false 20 source = sourceSets.main.allJava 21 options.noTimestamp = true 22 options.header = "<ul class=\"navList\"><li>Robolectric $thisVersion | <a href=\"/\">Home</a></li></ul>" 23 options.footer = "<ul class=\"navList\"><li>Robolectric $thisVersion | <a href=\"/\">Home</a></li></ul>" 24 options.bottom = "<link rel=\"stylesheet\" href=\"https://robolectric.org/assets/css/main.css\">" 25 options.version = thisVersion 26 } 27 28 task('javadocJar', type: Jar, dependsOn: javadoc) { 29 archiveClassifier = "javadoc" 30 from javadoc.destinationDir 31 } 32 33 // for maven local install: 34 archivesBaseName = mavenArtifactName 35 36 publishing { 37 publications { 38 mavenJava(MavenPublication) { 39 from components.java 40 41 def skipJavadoc = System.getenv('SKIP_JAVADOC') == "true" 42 artifact sourcesJar 43 if (!skipJavadoc) { 44 artifact javadocJar 45 } 46 47 artifactId = mavenArtifactName 48 pom { 49 name = project.name 50 description = "An alternative Android testing framework." 51 url = "http://robolectric.org" 52 53 licenses { 54 license { 55 name = "The MIT License" 56 url = "https://opensource.org/licenses/MIT" 57 } 58 } 59 60 scm { 61 url = "git@github.com:robolectric/robolectric.git" 62 connection = "scm:git:git://github.com/robolectric/robolectric.git" 63 developerConnection = "scm:git:https://github.com/robolectric/robolectric.git" 64 } 65 66 developers { 67 developer { 68 name = "Brett Chabot" 69 email = "brettchabot@google.com" 70 organization = "Google Inc." 71 organizationUrl = "http://google.com" 72 } 73 74 developer { 75 name = "Michael Hoisie" 76 email = "hoisie@google.com" 77 organization = "Google Inc." 78 organizationUrl = "http://google.com" 79 } 80 81 developer { 82 name = "Christian Williams" 83 email = "antixian666@gmail.com" 84 } 85 } 86 } 87 } 88 } 89 90 repositories { 91 maven { 92 def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/" 93 def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots" 94 url = project.version.endsWith("-SNAPSHOT") ? snapshotsRepoUrl : releasesRepoUrl 95 96 credentials { 97 username = System.properties["sonatype-login"] ?: System.env['sonatypeLogin'] 98 password = System.properties["sonatype-password"] ?: System.env['sonatypePassword'] 99 } 100 } 101 } 102 } 103 104 signing { 105 required { !version.endsWith("SNAPSHOT") && gradle.taskGraph.hasTask("uploadArchives") } 106 sign publishing.publications.mavenJava 107 } 108 } 109 110 @Override 111 void apply(Project project) { 112 doApply.delegate = project 113 doApply.resolveStrategy = Closure.DELEGATE_ONLY 114 doApply() 115 } 116} 117