Skip to content

Commit a3c3dae

Browse files
committed
Update build script to upload archives to Maven
1 parent bd5e917 commit a3c3dae

File tree

2 files changed

+230
-6
lines changed

2 files changed

+230
-6
lines changed

ParseUI-Login/build.gradle

Lines changed: 105 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,12 @@
1919
*
2020
*/
2121

22+
import com.android.builder.core.BuilderConstants
23+
2224
apply plugin: 'android-library'
2325

26+
version = "0.0.1"
27+
2428
dependencies {
2529
compile 'com.android.support:support-v4:23.0.1'
2630
compile 'com.parse:parse-android:1.10.3'
@@ -31,11 +35,109 @@ dependencies {
3135
}
3236

3337
android {
34-
compileSdkVersion 21
35-
buildToolsVersion "21.1.1"
38+
compileSdkVersion 23
39+
buildToolsVersion "23.0.1"
3640

3741
defaultConfig {
3842
minSdkVersion 9
39-
targetSdkVersion 21
43+
targetSdkVersion 23
44+
versionName project.version
45+
}
46+
}
47+
48+
android.libraryVariants.all { variant ->
49+
def name = variant.buildType.name
50+
51+
def javadocTask = task("javadoc${variant.name.capitalize()}", type: Javadoc) {
52+
description "Generates Javadoc for $variant.name."
53+
source = variant.javaCompile.source
54+
ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
55+
classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)
56+
57+
options.linksOffline("http://d.android.com/reference", "${android.sdkDirectory}/docs/reference")
58+
options.links("http://boltsframework.github.io/docs/android/")
59+
60+
exclude '**/BuildConfig.java'
61+
exclude '**/R.java'
62+
exclude '**/internal/**'
63+
exclude '**/oauth/**'
64+
}
65+
66+
def javadocJarTask = task("javadocJar${variant.name.capitalize()}", type: Jar, dependsOn: "javadoc${variant.name.capitalize()}") {
67+
classifier = 'javadoc'
68+
from javadocTask.destinationDir
69+
}
70+
71+
if (name.equals(BuilderConstants.RELEASE)) {
72+
artifacts.add('archives', javadocJarTask);
73+
}
74+
}
75+
76+
//region Maven
77+
78+
apply plugin: 'maven'
79+
apply plugin: 'signing'
80+
81+
def isSnapshot = version.endsWith('-SNAPSHOT')
82+
def ossrhUsername = hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : System.getenv('CI_NEXUS_USERNAME')
83+
def ossrhPassword = hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : System.getenv('CI_NEXUS_PASSWORD')
84+
85+
uploadArchives {
86+
repositories.mavenDeployer {
87+
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
88+
89+
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
90+
authentication(userName: ossrhUsername, password: ossrhPassword)
91+
}
92+
93+
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
94+
authentication(userName: ossrhUsername, password: ossrhPassword)
95+
}
96+
97+
pom.project {
98+
name 'ParseUI-Login-Android'
99+
packaging 'aar'
100+
artifactId 'parseui-login-android'
101+
description 'A library contains login user interfaces for building apps with the Parse Android SDK.'
102+
url 'https://github.com/ParsePlatform/ParseUI-Android'
103+
104+
scm {
105+
connection 'scm:[email protected]:ParsePlatform/ParseUI-Android.git'
106+
developerConnection 'scm:[email protected]:ParsePlatform/ParseUI-Android.git'
107+
url 'https://github.com/ParsePlatform/ParseUI-Android'
108+
}
109+
110+
licenses {
111+
license {
112+
name 'BSD License'
113+
url 'https://github.com/ParsePlatform/ParseUI-Android/blob/master/LICENSE'
114+
distribution 'repo'
115+
}
116+
}
117+
118+
developers {
119+
developer {
120+
id 'parse'
121+
name 'Parse'
122+
}
123+
}
124+
}
40125
}
41126
}
127+
128+
signing {
129+
required { !isSnapshot && gradle.taskGraph.hasTask("uploadArchives") }
130+
sign configurations.archives
131+
}
132+
133+
134+
task androidSourcesJar(type: Jar) {
135+
classifier = 'sources'
136+
from android.sourceSets.main.java.sourceFiles
137+
}
138+
139+
artifacts {
140+
archives androidSourcesJar
141+
}
142+
143+
//endregion

ParseUI-Widget/build.gradle

Lines changed: 125 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,12 @@
1818
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1919
*/
2020

21+
import com.android.builder.core.BuilderConstants
22+
2123
apply plugin: 'com.android.library'
2224

25+
version = "0.0.1"
26+
2327
dependencies {
2428
compile 'com.parse:parse-android:1.10.3'
2529

@@ -30,11 +34,129 @@ dependencies {
3034
}
3135

3236
android {
33-
compileSdkVersion 21
34-
buildToolsVersion "21.1.1"
37+
compileSdkVersion 23
38+
buildToolsVersion "23.0.1"
3539

3640
defaultConfig {
3741
minSdkVersion 9
38-
targetSdkVersion 21
42+
targetSdkVersion 23
43+
versionName project.version
44+
}
45+
}
46+
47+
android.libraryVariants.all { variant ->
48+
def name = variant.buildType.name
49+
50+
def jarTask = task("jar${name.capitalize()}", type: Jar) {
51+
dependsOn variant.javaCompile
52+
from variant.javaCompile.destinationDir
53+
54+
manifest {
55+
attributes(
56+
"Bundle-Name": 'parseui-widget-android',
57+
"Bundle-Version": project.version
58+
)
59+
}
60+
61+
exclude '**/R.class'
62+
exclude '**/R\$*.class'
63+
exclude '**/Manifest.class'
64+
exclude '**/Manifest\$*.class'
65+
exclude '**/BuildConfig.class'
66+
67+
baseName 'ParseUI-Widget'
68+
}
69+
70+
def javadocTask = task("javadoc${variant.name.capitalize()}", type: Javadoc) {
71+
description "Generates Javadoc for $variant.name."
72+
source = variant.javaCompile.source
73+
ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
74+
classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)
75+
76+
options.linksOffline("http://d.android.com/reference", "${android.sdkDirectory}/docs/reference")
77+
options.links("http://boltsframework.github.io/docs/android/")
78+
79+
exclude '**/BuildConfig.java'
80+
exclude '**/R.java'
81+
exclude '**/internal/**'
82+
exclude '**/oauth/**'
83+
}
84+
85+
def javadocJarTask = task("javadocJar${variant.name.capitalize()}", type: Jar, dependsOn: "javadoc${variant.name.capitalize()}") {
86+
classifier = 'javadoc'
87+
from javadocTask.destinationDir
88+
}
89+
90+
if (name.equals(BuilderConstants.RELEASE)) {
91+
artifacts.add('archives', jarTask);
92+
artifacts.add('archives', javadocJarTask);
93+
}
94+
}
95+
96+
//region Maven
97+
98+
apply plugin: 'maven'
99+
apply plugin: 'signing'
100+
101+
def isSnapshot = version.endsWith('-SNAPSHOT')
102+
def ossrhUsername = hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : System.getenv('CI_NEXUS_USERNAME')
103+
def ossrhPassword = hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : System.getenv('CI_NEXUS_PASSWORD')
104+
105+
uploadArchives {
106+
repositories.mavenDeployer {
107+
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
108+
109+
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
110+
authentication(userName: ossrhUsername, password: ossrhPassword)
111+
}
112+
113+
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
114+
authentication(userName: ossrhUsername, password: ossrhPassword)
115+
}
116+
117+
pom.project {
118+
name 'ParseUI-Widget-Android'
119+
artifactId = 'parseui-widget-android'
120+
packaging 'jar'
121+
description 'A library contains ui widgets for building apps with the Parse Android SDK.'
122+
url 'https://github.com/ParsePlatform/ParseUI-Android'
123+
124+
scm {
125+
connection 'scm:[email protected]:ParsePlatform/ParseUI-Android.git'
126+
developerConnection 'scm:[email protected]:ParsePlatform/ParseUI-Android.git'
127+
url 'https://github.com/ParsePlatform/ParseUI-Android'
128+
}
129+
130+
licenses {
131+
license {
132+
name 'BSD License'
133+
url 'https://github.com/ParsePlatform/ParseUI-Android/blob/master/LICENSE'
134+
distribution 'repo'
135+
}
136+
}
137+
138+
developers {
139+
developer {
140+
id 'parse'
141+
name 'Parse'
142+
}
143+
}
144+
}
39145
}
40146
}
147+
148+
signing {
149+
required { !isSnapshot && gradle.taskGraph.hasTask("uploadArchives") }
150+
sign configurations.archives
151+
}
152+
153+
task androidSourcesJar(type: Jar) {
154+
classifier = 'sources'
155+
from android.sourceSets.main.java.sourceFiles
156+
}
157+
158+
artifacts {
159+
archives androidSourcesJar
160+
}
161+
162+
//endregion

0 commit comments

Comments
 (0)