• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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