diff --git a/build.gradle b/build.gradle index d296424d0..0a9fb5896 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,9 @@ +buildscript { + dependencies { + classpath("org.jetbrains.dokka:versioning-plugin:1.9.0") + } +} + plugins { alias libs.plugins.android.application apply false alias libs.plugins.android.library apply false diff --git a/identity-android/build.gradle b/identity-android/build.gradle index f882b2ca1..573818e87 100644 --- a/identity-android/build.gradle +++ b/identity-android/build.gradle @@ -1,6 +1,5 @@ plugins { id("com.android.library") - id("maven-publish") alias libs.plugins.kotlin.android alias libs.plugins.dokka } @@ -29,13 +28,6 @@ android { lint { lintConfig file('lint.xml') } - - publishing { - singleVariant("release") { - withSourcesJar() - withJavadocJar() - } - } } dependencies { @@ -46,6 +38,7 @@ dependencies { implementation "org.bouncycastle:bcprov-jdk15on:1.67" implementation("org.bouncycastle:bcpkix-jdk15on:1.67") implementation "com.android.volley:volley:1.2.1" + implementation("org.jetbrains.dokka:versioning-plugin:1.9.0") testImplementation "androidx.test.espresso:espresso-core:3.4.0" testImplementation "androidx.test.ext:junit:1.1.3" @@ -62,23 +55,14 @@ tasks.withType(Test) { } } +apply from: '../publish-helper.gradle' afterEvaluate { - publishing { publications { release(MavenPublication) { - from components.release - groupId 'com.android.identity' - artifactId 'identity-credential' - - pom { - licenses { - license { - name = 'Apache 2.0' - url = 'https://opensource.org/licenses/Apache-2.0' - } - } - } + // Specify custom artifactId if needed, + // otherwise it will use module's name by default. + artifactId = "identity-credential-android" } } } diff --git a/identity/build.gradle b/identity/build.gradle index c6f74cc78..4975a1b23 100644 --- a/identity/build.gradle +++ b/identity/build.gradle @@ -5,14 +5,8 @@ plugins { } java { - apply plugin: 'org.jetbrains.dokka' - - withSourcesJar() - withJavadocJar() - sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - } dependencies { @@ -20,7 +14,21 @@ dependencies { implementation "co.nstant.in:cbor:0.9" implementation "org.bouncycastle:bcprov-jdk15on:1.69" implementation("org.bouncycastle:bcpkix-jdk15on:1.69") + implementation("org.jetbrains.dokka:versioning-plugin:1.9.0") testImplementation "junit:junit:4.13.2" testImplementation "org.bouncycastle:bcprov-jdk15on:1.69" +} + +apply from: '../publish-helper.gradle' +afterEvaluate { + publishing { + publications { + release(MavenPublication) { + // Specify custom artifactId if needed, + // otherwise it will use module's name by default. + artifactId = "identity-credential" + } + } + } } \ No newline at end of file diff --git a/publish-helper.gradle b/publish-helper.gradle new file mode 100644 index 000000000..b97a45c15 --- /dev/null +++ b/publish-helper.gradle @@ -0,0 +1,78 @@ +apply plugin: 'maven-publish' + +task androidJavadoc(type: Javadoc) { + if (plugins.hasPlugin('android-library')) { + source = android.sourceSets.main.java.srcDirs + classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + android.libraryVariants.all { variant -> + if (variant.name == 'release') { + owner.classpath += variant.javaCompileProvider.get().classpath + } + } + } + else { + source = sourceSets.main.allJava + classpath += configurations.runtimeClasspath + classpath += configurations.compileClasspath + } + exclude '**/R.html', '**/R.*.html', '**/index.html', '**/*.kt' + options.encoding 'utf-8' + options { + addStringOption 'docencoding', 'utf-8' + addStringOption 'charset', 'utf-8' + links 'https://docs.oracle.com/javase/7/docs/api/' + links 'https://d.android.com/reference' + links 'https://developer.android.com/reference/androidx/' + } +} + +task androidJavadocJar(type: Jar, dependsOn: androidJavadoc) { + archiveClassifier.set('javadoc') + from androidJavadoc.destinationDir + preserveFileTimestamps = false + reproducibleFileOrder = true +} + +task javaSourcesJar(type: Jar) { + archiveClassifier.set('sources') + if (plugins.hasPlugin('android-library')) { + from android.sourceSets.main.java.srcDirs + } + else { + from sourceSets.main.allSource + } + preserveFileTimestamps = false + reproducibleFileOrder = true +} + +afterEvaluate { + publishing { + publications { + release(MavenPublication) { + if (plugins.hasPlugin('android-library')) { + from components.release + } + else if (plugins.hasPlugin('java')) { + from components.java + jar.preserveFileTimestamps = false + jar.reproducibleFileOrder = true + } + + artifact androidJavadocJar + artifact javaSourcesJar + + groupId 'com.android.identity' + version 'YYYYMMDD' + pom { + name = artifactId + licenses { + license { + name = 'Apache 2.0' + url = 'https://opensource.org/licenses/Apache-2.0' + } + } + } + } + } + } +} \ No newline at end of file