Skip to content

Commit

Permalink
Fix maven release changes (#665)
Browse files Browse the repository at this point in the history
  • Loading branch information
tanya732 committed Sep 20, 2024
1 parent 34b8353 commit 8671a1d
Show file tree
Hide file tree
Showing 7 changed files with 230 additions and 44 deletions.
9 changes: 3 additions & 6 deletions .github/actions/maven-publish/action.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
name: Publish release to Java

inputs:
java-version:
required: true
ossr-username:
required: true
ossr-token:
Expand All @@ -9,12 +11,7 @@ inputs:
required: true
signing-password:
required: true
java-version:
required: true
is-android:
required: true
version:
required: true


runs:
using: composite
Expand Down
6 changes: 1 addition & 5 deletions .github/workflows/java-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ on:
java-version:
required: true
type: string
is-android:
required: true
type: string

secrets:
ossr-username:
required: true
Expand Down Expand Up @@ -70,8 +68,6 @@ jobs:
- uses: ./.github/actions/maven-publish
with:
java-version: ${{ inputs.java-version }}
is-android: ${{ inputs.is-android }}
version: ${{ steps.get_version.outputs.version }}
ossr-username: ${{ secrets.ossr-username }}
ossr-token: ${{ secrets.ossr-token }}
signing-key: ${{ secrets.signing-key }}
Expand Down
107 changes: 77 additions & 30 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,43 +1,30 @@
buildscript {
repositories {
jcenter()
}

dependencies {
// https://github.com/melix/japicmp-gradle-plugin/issues/36
classpath 'com.google.guava:guava:31.1-jre'
}
}


plugins {
id 'java'
id 'jacoco'
id 'com.auth0.gradle.oss-library.java'
id 'me.champeau.gradle.japicmp' version '0.2.9'
}

repositories {
mavenCentral()
}

group = 'com.auth0'
logger.lifecycle("Using version ${version} for ${name} group $group")

def signingKey = findProperty('signingKey')
def signingKeyPwd = findProperty('signingPassword')

oss {
name 'auth0'
repository 'auth0-java'
organization 'auth0'
description 'Java client library for the Auth0 platform.'
baselineCompareVersion '2.0.0'
testInJavaVersions = [8, 11, 17]
skipAssertSigningConfiguration true

developers {
auth0 {
displayName = 'Auth0'
email = '[email protected]'
}
lbalmaceda {
displayName = 'Luciano Balmaceda'
email = '[email protected]'
}
}
}
apply from: rootProject.file('gradle/versioning.gradle')

signing {
useInMemoryPgpKeys(signingKey, signingKeyPwd)
}
version = getVersionFromFile()
group = GROUP
logger.lifecycle("Using version ${version} for ${name} group $group")

jacocoTestReport {
reports {
Expand All @@ -63,6 +50,61 @@ compileTestJava {
options.compilerArgs << "-Xlint:deprecation" << "-Werror"
}

import me.champeau.gradle.japicmp.JapicmpTask

project.afterEvaluate {

def versions = project.ext.testInJavaVersions
for (pluginJavaTestVersion in versions) {
def taskName = "testInJava-${pluginJavaTestVersion}"
tasks.register(taskName, Test) {
def versionToUse = taskName.split("-").getAt(1) as Integer
description = "Runs unit tests on Java version ${versionToUse}."
project.logger.quiet("Test will be running in ${versionToUse}")
group = 'verification'
javaLauncher.set(javaToolchains.launcherFor {
languageVersion = JavaLanguageVersion.of(versionToUse)
})
shouldRunAfter(tasks.named('test'))
}
tasks.named('check') {
dependsOn(taskName)
}
}

project.configure(project) {
def baselineVersion = project.ext.baselineCompareVersion
task('apiDiff', type: JapicmpTask, dependsOn: 'jar') {
oldClasspath = files(getBaselineJar(project, baselineVersion))
newClasspath = files(jar.archiveFile)
onlyModified = true
failOnModification = true
ignoreMissingClasses = true
htmlOutputFile = file("$buildDir/reports/apiDiff/apiDiff.html")
txtOutputFile = file("$buildDir/reports/apiDiff/apiDiff.txt")
doLast {
project.logger.quiet("Comparing against baseline version ${baselineVersion}")
}
}
}
}

private static File getBaselineJar(Project project, String baselineVersion) {
// Use detached configuration: https://github.com/square/okhttp/blob/master/build.gradle#L270
def group = project.group
try {
def baseline = "${project.group}:${project.name}:$baselineVersion"
project.group = 'virtual_group_for_japicmp'
def dependency = project.dependencies.create(baseline + "@jar")
return project.configurations.detachedConfiguration(dependency).files.find {
it.name == "${project.name}-${baselineVersion}.jar"
}
} finally {
project.group = group
}
}


test {
testLogging {
events "skipped", "failed"
Expand All @@ -75,6 +117,9 @@ ext {
okhttpVersion = '4.11.0'
hamcrestVersion = '2.2'
jupiterVersion = '5.9.3'

baselineCompareVersion = '2.0.0'
testInJavaVersions = [8, 11, 17, 21]
}

dependencies {
Expand Down Expand Up @@ -105,3 +150,5 @@ dependencies {
}
}
}

apply from: rootProject.file('gradle/maven-publish.gradle')
21 changes: 21 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
GROUP=com.auth0
POM_ARTIFACT_ID=auth0
VERSION_NAME=2.12.0

POM_NAME=auth0-java
POM_DESCRIPTION=Java client library for the Auth0 platform
POM_PACKAGING=jar

POM_URL=https://github.com/auth0/auth0-java
POM_SCM_URL=https://github.com/auth0/auth0-java

POM_SCM_CONNECTION=scm:git:https://github.com/auth0/auth0-java.git
POM_SCM_DEV_CONNECTION=scm:git:https://github.com/auth0/auth0-java.git

POM_LICENCE_NAME=The MIT License (MIT)
POM_LICENCE_URL=https://raw.githubusercontent.com/auth0/auth0-java/master/LICENSE
POM_LICENCE_DIST=repo

POM_DEVELOPER_ID=auth0
POM_DEVELOPER_NAME=Auth0
POM_DEVELOPER_EMAIL[email protected]
111 changes: 111 additions & 0 deletions gradle/maven-publish.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
apply plugin: 'maven-publish'
apply plugin: 'signing'

task('sourcesJar', type: Jar, dependsOn: classes) {
archiveClassifier = 'sources'
from sourceSets.main.allSource
}

task('javadocJar', type: Jar, dependsOn: javadoc) {
archiveClassifier = 'javadoc'
from javadoc.getDestinationDir()
}
tasks.withType(Javadoc).configureEach {
javadocTool = javaToolchains.javadocToolFor {
// Use latest JDK for javadoc generation
languageVersion = JavaLanguageVersion.of(17)
}
}

javadoc {
// Specify the Java version that the project will use
options.addStringOption('-release', "8")
}
artifacts {
archives sourcesJar, javadocJar
}


final releaseRepositoryUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
final snapshotRepositoryUrl = "https://oss.sonatype.org/content/repositories/snapshots/"

publishing {
publications {
mavenJava(MavenPublication) {

groupId = GROUP
artifactId = POM_ARTIFACT_ID
version = getVersionName()

artifact("$buildDir/libs/${project.name}-${version}.jar")
artifact sourcesJar
artifact javadocJar

pom {
name = POM_NAME
packaging = POM_PACKAGING
description = POM_DESCRIPTION
url = POM_URL

licenses {
license {
name = POM_LICENCE_NAME
url = POM_LICENCE_URL
distribution = POM_LICENCE_DIST
}
}

developers {
developer {
id = POM_DEVELOPER_ID
name = POM_DEVELOPER_NAME
email = POM_DEVELOPER_EMAIL
}
}

scm {
url = POM_SCM_URL
connection = POM_SCM_CONNECTION
developerConnection = POM_SCM_DEV_CONNECTION
}

pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')

project.configurations.implementation.allDependencies.each {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
}
}
}
}
repositories {
maven {
name = "sonatype"
url = version.endsWith('SNAPSHOT') ? snapshotRepositoryUrl : releaseRepositoryUrl
credentials {
username = System.getenv("MAVEN_USERNAME")
password = System.getenv("MAVEN_PASSWORD")
}
}
}
}

signing {
def signingKey = System.getenv("SIGNING_KEY")
def signingPassword = System.getenv("SIGNING_PASSWORD")
useInMemoryPgpKeys(signingKey, signingPassword)

sign publishing.publications.mavenJava
}

javadoc {
if(JavaVersion.current().isJava9Compatible()) {
options.addBooleanOption('html5', true)
}
}


17 changes: 17 additions & 0 deletions gradle/versioning.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
def getVersionFromFile() {
def versionFile = rootProject.file('.version')
return versionFile.text.readLines().first().trim()
}

def isSnapshot() {
return hasProperty('isSnapshot') ? isSnapshot.toBoolean() : true
}

def getVersionName() {
return isSnapshot() ? project.version+"-SNAPSHOT" : project.version
}

ext {
getVersionName = this.&getVersionName
getVersionFromFile = this.&getVersionFromFile
}
3 changes: 0 additions & 3 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ pluginManagement {
repositories {
gradlePluginPortal()
}
plugins {
id 'com.auth0.gradle.oss-library.java' version '0.18.0'
}
}

rootProject.name = 'auth0'

0 comments on commit 8671a1d

Please sign in to comment.