Skip to content

Commit 8671a1d

Browse files
authored
Fix maven release changes (#665)
1 parent 34b8353 commit 8671a1d

7 files changed

Lines changed: 230 additions & 44 deletions

File tree

.github/actions/maven-publish/action.yml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
name: Publish release to Java
22

33
inputs:
4+
java-version:
5+
required: true
46
ossr-username:
57
required: true
68
ossr-token:
@@ -9,12 +11,7 @@ inputs:
911
required: true
1012
signing-password:
1113
required: true
12-
java-version:
13-
required: true
14-
is-android:
15-
required: true
16-
version:
17-
required: true
14+
1815

1916
runs:
2017
using: composite

.github/workflows/java-release.yml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ on:
66
java-version:
77
required: true
88
type: string
9-
is-android:
10-
required: true
11-
type: string
9+
1210
secrets:
1311
ossr-username:
1412
required: true
@@ -70,8 +68,6 @@ jobs:
7068
- uses: ./.github/actions/maven-publish
7169
with:
7270
java-version: ${{ inputs.java-version }}
73-
is-android: ${{ inputs.is-android }}
74-
version: ${{ steps.get_version.outputs.version }}
7571
ossr-username: ${{ secrets.ossr-username }}
7672
ossr-token: ${{ secrets.ossr-token }}
7773
signing-key: ${{ secrets.signing-key }}

build.gradle

Lines changed: 77 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,30 @@
1+
buildscript {
2+
repositories {
3+
jcenter()
4+
}
5+
6+
dependencies {
7+
// https://github.com/melix/japicmp-gradle-plugin/issues/36
8+
classpath 'com.google.guava:guava:31.1-jre'
9+
}
10+
}
11+
12+
113
plugins {
214
id 'java'
315
id 'jacoco'
4-
id 'com.auth0.gradle.oss-library.java'
16+
id 'me.champeau.gradle.japicmp' version '0.2.9'
517
}
618

719
repositories {
820
mavenCentral()
921
}
1022

11-
group = 'com.auth0'
12-
logger.lifecycle("Using version ${version} for ${name} group $group")
13-
14-
def signingKey = findProperty('signingKey')
15-
def signingKeyPwd = findProperty('signingPassword')
16-
17-
oss {
18-
name 'auth0'
19-
repository 'auth0-java'
20-
organization 'auth0'
21-
description 'Java client library for the Auth0 platform.'
22-
baselineCompareVersion '2.0.0'
23-
testInJavaVersions = [8, 11, 17]
24-
skipAssertSigningConfiguration true
25-
26-
developers {
27-
auth0 {
28-
displayName = 'Auth0'
29-
email = 'oss@auth0.com'
30-
}
31-
lbalmaceda {
32-
displayName = 'Luciano Balmaceda'
33-
email = 'luciano.balmaceda@auth0.com'
34-
}
35-
}
36-
}
23+
apply from: rootProject.file('gradle/versioning.gradle')
3724

38-
signing {
39-
useInMemoryPgpKeys(signingKey, signingKeyPwd)
40-
}
25+
version = getVersionFromFile()
26+
group = GROUP
27+
logger.lifecycle("Using version ${version} for ${name} group $group")
4128

4229
jacocoTestReport {
4330
reports {
@@ -63,6 +50,61 @@ compileTestJava {
6350
options.compilerArgs << "-Xlint:deprecation" << "-Werror"
6451
}
6552

53+
import me.champeau.gradle.japicmp.JapicmpTask
54+
55+
project.afterEvaluate {
56+
57+
def versions = project.ext.testInJavaVersions
58+
for (pluginJavaTestVersion in versions) {
59+
def taskName = "testInJava-${pluginJavaTestVersion}"
60+
tasks.register(taskName, Test) {
61+
def versionToUse = taskName.split("-").getAt(1) as Integer
62+
description = "Runs unit tests on Java version ${versionToUse}."
63+
project.logger.quiet("Test will be running in ${versionToUse}")
64+
group = 'verification'
65+
javaLauncher.set(javaToolchains.launcherFor {
66+
languageVersion = JavaLanguageVersion.of(versionToUse)
67+
})
68+
shouldRunAfter(tasks.named('test'))
69+
}
70+
tasks.named('check') {
71+
dependsOn(taskName)
72+
}
73+
}
74+
75+
project.configure(project) {
76+
def baselineVersion = project.ext.baselineCompareVersion
77+
task('apiDiff', type: JapicmpTask, dependsOn: 'jar') {
78+
oldClasspath = files(getBaselineJar(project, baselineVersion))
79+
newClasspath = files(jar.archiveFile)
80+
onlyModified = true
81+
failOnModification = true
82+
ignoreMissingClasses = true
83+
htmlOutputFile = file("$buildDir/reports/apiDiff/apiDiff.html")
84+
txtOutputFile = file("$buildDir/reports/apiDiff/apiDiff.txt")
85+
doLast {
86+
project.logger.quiet("Comparing against baseline version ${baselineVersion}")
87+
}
88+
}
89+
}
90+
}
91+
92+
private static File getBaselineJar(Project project, String baselineVersion) {
93+
// Use detached configuration: https://github.com/square/okhttp/blob/master/build.gradle#L270
94+
def group = project.group
95+
try {
96+
def baseline = "${project.group}:${project.name}:$baselineVersion"
97+
project.group = 'virtual_group_for_japicmp'
98+
def dependency = project.dependencies.create(baseline + "@jar")
99+
return project.configurations.detachedConfiguration(dependency).files.find {
100+
it.name == "${project.name}-${baselineVersion}.jar"
101+
}
102+
} finally {
103+
project.group = group
104+
}
105+
}
106+
107+
66108
test {
67109
testLogging {
68110
events "skipped", "failed"
@@ -75,6 +117,9 @@ ext {
75117
okhttpVersion = '4.11.0'
76118
hamcrestVersion = '2.2'
77119
jupiterVersion = '5.9.3'
120+
121+
baselineCompareVersion = '2.0.0'
122+
testInJavaVersions = [8, 11, 17, 21]
78123
}
79124

80125
dependencies {
@@ -105,3 +150,5 @@ dependencies {
105150
}
106151
}
107152
}
153+
154+
apply from: rootProject.file('gradle/maven-publish.gradle')

gradle.properties

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
GROUP=com.auth0
2+
POM_ARTIFACT_ID=auth0
3+
VERSION_NAME=2.12.0
4+
5+
POM_NAME=auth0-java
6+
POM_DESCRIPTION=Java client library for the Auth0 platform
7+
POM_PACKAGING=jar
8+
9+
POM_URL=https://github.com/auth0/auth0-java
10+
POM_SCM_URL=https://github.com/auth0/auth0-java
11+
12+
POM_SCM_CONNECTION=scm:git:https://github.com/auth0/auth0-java.git
13+
POM_SCM_DEV_CONNECTION=scm:git:https://github.com/auth0/auth0-java.git
14+
15+
POM_LICENCE_NAME=The MIT License (MIT)
16+
POM_LICENCE_URL=https://raw.githubusercontent.com/auth0/auth0-java/master/LICENSE
17+
POM_LICENCE_DIST=repo
18+
19+
POM_DEVELOPER_ID=auth0
20+
POM_DEVELOPER_NAME=Auth0
21+
POM_DEVELOPER_EMAIL=oss@auth0.com

gradle/maven-publish.gradle

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
apply plugin: 'maven-publish'
2+
apply plugin: 'signing'
3+
4+
task('sourcesJar', type: Jar, dependsOn: classes) {
5+
archiveClassifier = 'sources'
6+
from sourceSets.main.allSource
7+
}
8+
9+
task('javadocJar', type: Jar, dependsOn: javadoc) {
10+
archiveClassifier = 'javadoc'
11+
from javadoc.getDestinationDir()
12+
}
13+
tasks.withType(Javadoc).configureEach {
14+
javadocTool = javaToolchains.javadocToolFor {
15+
// Use latest JDK for javadoc generation
16+
languageVersion = JavaLanguageVersion.of(17)
17+
}
18+
}
19+
20+
javadoc {
21+
// Specify the Java version that the project will use
22+
options.addStringOption('-release', "8")
23+
}
24+
artifacts {
25+
archives sourcesJar, javadocJar
26+
}
27+
28+
29+
final releaseRepositoryUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
30+
final snapshotRepositoryUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
31+
32+
publishing {
33+
publications {
34+
mavenJava(MavenPublication) {
35+
36+
groupId = GROUP
37+
artifactId = POM_ARTIFACT_ID
38+
version = getVersionName()
39+
40+
artifact("$buildDir/libs/${project.name}-${version}.jar")
41+
artifact sourcesJar
42+
artifact javadocJar
43+
44+
pom {
45+
name = POM_NAME
46+
packaging = POM_PACKAGING
47+
description = POM_DESCRIPTION
48+
url = POM_URL
49+
50+
licenses {
51+
license {
52+
name = POM_LICENCE_NAME
53+
url = POM_LICENCE_URL
54+
distribution = POM_LICENCE_DIST
55+
}
56+
}
57+
58+
developers {
59+
developer {
60+
id = POM_DEVELOPER_ID
61+
name = POM_DEVELOPER_NAME
62+
email = POM_DEVELOPER_EMAIL
63+
}
64+
}
65+
66+
scm {
67+
url = POM_SCM_URL
68+
connection = POM_SCM_CONNECTION
69+
developerConnection = POM_SCM_DEV_CONNECTION
70+
}
71+
72+
pom.withXml {
73+
def dependenciesNode = asNode().appendNode('dependencies')
74+
75+
project.configurations.implementation.allDependencies.each {
76+
def dependencyNode = dependenciesNode.appendNode('dependency')
77+
dependencyNode.appendNode('groupId', it.group)
78+
dependencyNode.appendNode('artifactId', it.name)
79+
dependencyNode.appendNode('version', it.version)
80+
}
81+
}
82+
}
83+
}
84+
}
85+
repositories {
86+
maven {
87+
name = "sonatype"
88+
url = version.endsWith('SNAPSHOT') ? snapshotRepositoryUrl : releaseRepositoryUrl
89+
credentials {
90+
username = System.getenv("MAVEN_USERNAME")
91+
password = System.getenv("MAVEN_PASSWORD")
92+
}
93+
}
94+
}
95+
}
96+
97+
signing {
98+
def signingKey = System.getenv("SIGNING_KEY")
99+
def signingPassword = System.getenv("SIGNING_PASSWORD")
100+
useInMemoryPgpKeys(signingKey, signingPassword)
101+
102+
sign publishing.publications.mavenJava
103+
}
104+
105+
javadoc {
106+
if(JavaVersion.current().isJava9Compatible()) {
107+
options.addBooleanOption('html5', true)
108+
}
109+
}
110+
111+

gradle/versioning.gradle

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
def getVersionFromFile() {
2+
def versionFile = rootProject.file('.version')
3+
return versionFile.text.readLines().first().trim()
4+
}
5+
6+
def isSnapshot() {
7+
return hasProperty('isSnapshot') ? isSnapshot.toBoolean() : true
8+
}
9+
10+
def getVersionName() {
11+
return isSnapshot() ? project.version+"-SNAPSHOT" : project.version
12+
}
13+
14+
ext {
15+
getVersionName = this.&getVersionName
16+
getVersionFromFile = this.&getVersionFromFile
17+
}

settings.gradle

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@ pluginManagement {
22
repositories {
33
gradlePluginPortal()
44
}
5-
plugins {
6-
id 'com.auth0.gradle.oss-library.java' version '0.18.0'
7-
}
85
}
96

107
rootProject.name = 'auth0'

0 commit comments

Comments
 (0)