Skip to content

Commit b8f0c43

Browse files
committed
Added maven publish changes
1 parent 27b96e3 commit b8f0c43

File tree

8 files changed

+246
-49
lines changed

8 files changed

+246
-49
lines changed
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
11
name: Publish release to Java
22

33
inputs:
4+
java-version:
5+
required: true
46
ossr-username:
57
required: true
6-
ossr-password:
8+
ossr-token:
79
required: true
810
signing-key:
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
1814

1915
runs:
2016
using: composite
@@ -30,15 +26,19 @@ runs:
3026
source "/home/runner/.sdkman/bin/sdkman-init.sh"
3127
sdk list java
3228
sdk install java ${{ inputs.java-version }} && sdk default java ${{ inputs.java-version }}
29+
export JAVA_HOME=${SDKMAN_DIR}/candidates/java/current
30+
echo "JAVA_HOME is set to $JAVA_HOME"
3331
3432
- uses: gradle/wrapper-validation-action@56b90f209b02bf6d1deae490e9ef18b21a389cd4 # [email protected]
33+
env:
34+
JAVA_HOME: ${{ env.JAVA_HOME }}
3535

36-
- name: Publish Java
37-
shell: bash
38-
if: inputs.is-android == 'false'
39-
run: ./gradlew clean assemble sign publishMavenJavaPublicationToMavenRepository -PisSnapshot=false -Pversion="${{ inputs.version }}" -PossrhUsername="${{ inputs.ossr-username }}" -PossrhPassword="${{ inputs.ossr-password }}" -PsigningKey="${{ inputs.signing-key }}" -PsigningPassword="${{ inputs.signing-password }}"
40-
41-
- name: Publish Android
36+
- name: Publish Java Packages to Maven
4237
shell: bash
43-
if: inputs.is-android == 'true'
44-
run: ./gradlew clean assemble sign publishAndroidLibraryPublicationToMavenRepository -PisSnapshot=false -Pversion="${{ inputs.version }}" -PossrhUsername="${{ inputs.ossr-username }}" -PossrhPassword="${{ inputs.ossr-password }}" -PsigningKey="${{ inputs.signing-key }}" -PsigningPassword="${{ inputs.signing-password }}"
38+
run: ./gradlew publish -PisSnapshot=false --stacktrace
39+
env:
40+
JAVA_HOME: ${{ env.JAVA_HOME }}
41+
MAVEN_USERNAME: ${{ inputs.ossr-username }}
42+
MAVEN_PASSWORD: ${{ inputs.ossr-token }}
43+
SIGNING_KEY: ${{ inputs.signing-key}}
44+
SIGNING_PASSWORD: ${{ inputs.signing-password}}

.github/workflows/java-release.yml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,10 @@ on:
66
java-version:
77
required: true
88
type: string
9-
is-android:
10-
required: true
11-
type: string
129
secrets:
1310
ossr-username:
1411
required: true
15-
ossr-password:
12+
ossr-token:
1613
required: true
1714
signing-key:
1815
required: true
@@ -66,16 +63,22 @@ jobs:
6663
- if: steps.tag_exists.outputs.exists == 'true'
6764
run: exit 1
6865

66+
# Set JAVA_HOME here and pass it to subsequent steps
67+
- name: Set JAVA_HOME for Gradle
68+
run: echo "JAVA_HOME=/home/runner/.sdkman/candidates/java/current" >> $GITHUB_ENV # This ensures JAVA_HOME is set globally
69+
env:
70+
SDKMAN_DIR: /home/runner/.sdkman
71+
6972
# Publish the release to Maven
7073
- uses: ./.github/actions/maven-publish
7174
with:
7275
java-version: ${{ inputs.java-version }}
73-
is-android: ${{ inputs.is-android }}
74-
version: ${{ steps.get_version.outputs.version }}
7576
ossr-username: ${{ secrets.ossr-username }}
76-
ossr-password: ${{ secrets.ossr-password }}
77+
ossr-token: ${{ secrets.ossr-token }}
7778
signing-key: ${{ secrets.signing-key }}
7879
signing-password: ${{ secrets.signing-password }}
80+
env:
81+
JAVA_HOME: ${{ env.JAVA_HOME }}
7982

8083
# Create a release for the tag
8184
- uses: ./.github/actions/release-create

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
is-android: false
3737
secrets:
3838
ossr-username: ${{ secrets.OSSR_USERNAME }}
39-
ossr-password: ${{ secrets.OSSR_PASSWORD }}
39+
ossr-token: ${{ secrets.OSSR_TOKEN }}
4040
signing-key: ${{ secrets.SIGNING_KEY }}
4141
signing-password: ${{ secrets.SIGNING_PASSWORD }}
4242
github-token: ${{ secrets.GITHUB_TOKEN }}

build.gradle

Lines changed: 70 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,87 @@
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+
112
plugins {
213
id 'java'
14+
id 'java-library'
315
id 'jacoco'
4-
id 'com.auth0.gradle.oss-library.java'
16+
id 'me.champeau.gradle.japicmp' version '0.4.1'
517
}
618

719
repositories {
820
mavenCentral()
921
}
1022

11-
group 'com.auth0'
23+
apply from: rootProject.file('gradle/versioning.gradle')
1224

25+
version = getVersionFromFile()
26+
group = GROUP
1327
logger.lifecycle("Using version ${version} for ${name} group $group")
1428

15-
def signingKey = findProperty('signingKey')
16-
def signingKeyPwd = findProperty('signingPassword')
17-
18-
oss {
19-
name 'mvc-auth-commons'
20-
repository 'auth0-java-mvc-common'
21-
organization 'auth0'
22-
description 'Java library that simplifies the use of Auth0 for server-side MVC web apps'
23-
baselineCompareVersion '1.5.0'
24-
skipAssertSigningConfiguration true
25-
26-
developers {
27-
auth0 {
28-
displayName = 'Auth0'
29-
29+
import me.champeau.gradle.japicmp.JapicmpTask
30+
31+
project.afterEvaluate {
32+
def versions = project.ext.testInJavaVersions
33+
for (pluginJavaTestVersion in versions) {
34+
def taskName = "testInJava-${pluginJavaTestVersion}"
35+
tasks.register(taskName, Test) {
36+
def versionToUse = taskName.split("-").getAt(1) as Integer
37+
description = "Runs unit tests on Java version ${versionToUse}."
38+
project.logger.quiet("Test will be running in ${versionToUse}")
39+
group = 'verification'
40+
javaLauncher.set(javaToolchains.launcherFor {
41+
languageVersion = JavaLanguageVersion.of(versionToUse)
42+
})
43+
shouldRunAfter(tasks.named('test'))
3044
}
31-
lbalmaceda {
32-
displayName = 'Luciano Balmaceda'
33-
45+
tasks.named('check') {
46+
dependsOn(taskName)
47+
}
48+
}
49+
50+
project.configure(project) {
51+
def baselineVersion = project.ext.baselineCompareVersion
52+
task('apiDiff', type: JapicmpTask, dependsOn: 'jar') {
53+
oldClasspath.from(files(getBaselineJar(project, baselineVersion)))
54+
newClasspath.from(files(jar.archiveFile))
55+
onlyModified = true
56+
failOnModification = true
57+
ignoreMissingClasses = true
58+
htmlOutputFile = file("$buildDir/reports/apiDiff/apiDiff.html")
59+
txtOutputFile = file("$buildDir/reports/apiDiff/apiDiff.txt")
60+
doLast {
61+
project.logger.quiet("Comparing against baseline version ${baselineVersion}")
62+
}
3463
}
3564
}
3665
}
3766

38-
signing {
39-
useInMemoryPgpKeys(signingKey, signingKeyPwd)
67+
private static File getBaselineJar(Project project, String baselineVersion) {
68+
// Use detached configuration: https://github.com/square/okhttp/blob/master/build.gradle#L270
69+
def group = project.group
70+
try {
71+
def baseline = "${project.group}:${project.name}:$baselineVersion"
72+
project.group = 'virtual_group_for_japicmp'
73+
def dependency = project.dependencies.create(baseline + "@jar")
74+
return project.configurations.detachedConfiguration(dependency).files.find {
75+
it.name == "${project.name}-${baselineVersion}.jar"
76+
}
77+
} finally {
78+
project.group = group
79+
}
80+
}
81+
82+
ext {
83+
baselineCompareVersion = '1.5.0'
84+
testInJavaVersions = [8, 11, 17, 21]
4085
}
4186

4287
jacocoTestReport {
@@ -91,4 +136,6 @@ dependencies {
91136
testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1'
92137
testImplementation 'org.springframework:spring-test:4.3.14.RELEASE'
93138
testImplementation 'com.squareup.okhttp3:okhttp:4.11.0'
94-
}
139+
}
140+
141+
apply from: rootProject.file('gradle/maven-publish.gradle')

gradle.properties

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
GROUP=com.auth0
2+
POM_ARTIFACT_ID=mvc-auth-commons
3+
4+
POM_NAME=auth0-java-mvc-common
5+
POM_DESCRIPTION=Java library that simplifies the use of Auth0 for server-side MVC web apps
6+
POM_PACKAGING=jar
7+
8+
POM_URL=https://github.com/auth0/auth0-java-mvc-common
9+
POM_SCM_URL=https://github.com/auth0/auth0-java-mvc-common
10+
11+
POM_SCM_CONNECTION=scm:git:https://github.com/auth0/auth0-java-mvc-common.git
12+
POM_SCM_DEV_CONNECTION=scm:git:https://github.com/auth0/auth0-java-mvc-common.git
13+
14+
POM_LICENCE_NAME=The MIT License (MIT)
15+
POM_LICENCE_URL=https://raw.githubusercontent.com/auth0/java-jwt/master/LICENSE
16+
POM_LICENCE_DIST=repo
17+
18+
POM_DEVELOPER_ID=auth0
19+
POM_DEVELOPER_NAME=Auth0
20+
POM_DEVELOPER_EMAIL[email protected]

gradle/maven-publish.gradle

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
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+
tasks.named('publish').configure {
112+
dependsOn tasks.named('assemble')
113+
}

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 = 'mvc-auth-commons'

0 commit comments

Comments
 (0)