1+ apply plugin : ' maven-publish'
2+ apply plugin : ' signing'
3+
4+ apply from : rootProject. file(' gradle/versioning.gradle' )
5+
6+ // TODO: java docs
7+
8+ task sourcesJar (type : Jar ) {
9+ archiveClassifier = ' sources'
10+ from android. sourceSets. main. java. source
11+ }
12+
13+ final releaseRepositoryUrl = " https://oss.sonatype.org/service/local/staging/deploy/maven2/"
14+ final snapshotRepositoryUrl = " https://oss.sonatype.org/content/repositories/snapshots/"
15+
16+ publishing {
17+ publications {
18+ release(MavenPublication ) {
19+ groupId = GROUP
20+ artifactId = POM_ARTIFACT_ID
21+ version = getVersionName()
22+
23+ artifact(" $buildDir /outputs/aar/${ project.getName()} -release.aar" )
24+ artifact sourcesJar
25+ // TODO: artifact javadocJar
26+
27+ pom {
28+ name = POM_NAME
29+ packaging = POM_PACKAGING
30+ description = POM_DESCRIPTION
31+ url = POM_URL
32+
33+ licenses {
34+ license {
35+ name = POM_LICENCE_NAME
36+ url = POM_LICENCE_URL
37+ distribution = POM_LICENCE_DIST
38+ }
39+ }
40+
41+ developers {
42+ developer {
43+ id = POM_DEVELOPER_ID
44+ name = POM_DEVELOPER_NAME
45+ email = POM_DEVELOPER_EMAIL
46+ }
47+ }
48+
49+ scm {
50+ url = POM_SCM_URL
51+ connection = POM_SCM_CONNECTION
52+ developerConnection = POM_SCM_DEV_CONNECTION
53+ }
54+
55+ withXml {
56+ def dependenciesNode = asNode(). appendNode(' dependencies' )
57+
58+ project. configurations. implementation. allDependencies. each {
59+ def dependencyNode = dependenciesNode. appendNode(' dependency' )
60+ dependencyNode. appendNode(' groupId' , it. group)
61+ dependencyNode. appendNode(' artifactId' , it. name)
62+ dependencyNode. appendNode(' version' , it. version)
63+ }
64+ }
65+ }
66+ }
67+ }
68+ repositories {
69+ maven {
70+ name = " sonatype"
71+ url = version. endsWith(' SNAPSHOT' ) ? snapshotRepositoryUrl : releaseRepositoryUrl
72+ credentials {
73+ username = System . getenv(" MAVEN_USERNAME" )
74+ password = System . getenv(" MAVEN_PASSWORD" )
75+ }
76+ }
77+ }
78+ }
79+
80+
81+ signing {
82+ def signingKey = System . getenv(" SIGNING_KEY" )
83+ def signingPassword = System . getenv(" SIGNING_PASSWORD" )
84+ useInMemoryPgpKeys(signingKey, signingPassword)
85+ sign publishing. publications
86+ }
87+
88+ publish. dependsOn build
89+ tasks. named(' signReleasePublication' ). configure {
90+ dependsOn ' bundleReleaseAar'
91+ }
0 commit comments