diff --git a/.github/workflows/java-ci.yml b/.github/workflows/java-ci.yml index ea62aa2..43c3c46 100644 --- a/.github/workflows/java-ci.yml +++ b/.github/workflows/java-ci.yml @@ -50,9 +50,9 @@ jobs: run: chmod +x gradlew - name: Deploy release with Gradle - run: ./gradlew publishMainPublicationToMavenRepository + run: ./gradlew publishToMavenCentral --no-configuration-cache env: - ORG_GRADLE_PROJECT_OSSRH_USERNAME: ${{ secrets.SONATYPE_USERNAME }} - ORG_GRADLE_PROJECT_OSSRH_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} - ORG_GRADLE_PROJECT_SIGNING_KEY: ${{ secrets.GPG_PRIVATE_KEY }} - ORG_GRADLE_PROJECT_SIGNING_PASSPHRASE: ${{ secrets.PASSPHRASE }} + ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_USERNAME }} + ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_PASSWORD }} + ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.GPG_PRIVATE_KEY }} + ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.PASSPHRASE }} diff --git a/build.gradle b/build.gradle index d0a3bc2..b2d2de5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,27 +1,33 @@ -apply plugin: 'idea' -apply plugin: 'eclipse' -apply plugin: 'java' -apply plugin: 'com.diffplug.spotless' -apply plugin: 'signing' -apply plugin: 'maven-publish' - -group = 'com.configcat' -version = '1.1.0' +import com.vanniktech.maven.publish.JavaLibrary +import com.vanniktech.maven.publish.JavadocJar +import com.vanniktech.maven.publish.SonatypeHost buildscript { repositories { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.+' - classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' - classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.11.0' + classpath(libs.android.gradle) + classpath(libs.android.maven.gradle.plugin) + classpath(libs.spotless.gradle.plugin) } } +plugins { + id 'idea' + id 'eclipse' + id 'java' + alias(libs.plugins.spotless) + alias(libs.plugins.mavenPublish) +} + +group = 'com.configcat' +version = '1.1.1' + repositories { mavenCentral() } + sourceSets { main.java.srcDirs = ['src/main/java'] } @@ -55,7 +61,7 @@ if(hasProperty('target') && target == 'android') { } dependencies { - provided "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version" + provided(libs.jakarta.annotation.api) } } @@ -82,26 +88,22 @@ if(hasProperty('target') && target == 'android') { } -ext { - jakarta_annotation_version = "1.3.5" -} - dependencies { - implementation 'io.swagger:swagger-annotations:1.6.8' - implementation "com.google.code.findbugs:jsr305:3.0.2" - implementation 'com.squareup.okhttp3:okhttp:4.12.0' - implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0' - implementation 'com.google.code.gson:gson:2.9.1' - implementation 'io.gsonfire:gson-fire:1.9.0' - implementation 'javax.ws.rs:jsr311-api:1.1.1' - implementation 'javax.ws.rs:javax.ws.rs-api:2.1.1' - implementation 'org.openapitools:jackson-databind-nullable:0.2.6' - implementation 'com.fasterxml.jackson.core:jackson-core:2.15.0-rc1' - implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0' - implementation "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version" - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2' - testImplementation 'org.mockito:mockito-core:3.12.4' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.2' + implementation(libs.swagger.annotations) + implementation(libs.findbugs.jsr305) + implementation(libs.okhttp) + implementation(libs.logging.interceptor) + implementation(libs.gson) + implementation(libs.gson.fire) + implementation(libs.jsr311.api) + implementation(libs.javax.ws.rs.api) + implementation(libs.jackson.databind.nullable) + implementation(libs.jackson.core) + implementation(libs.commons.lang3) + implementation(libs.jakarta.annotation.api) + testImplementation(libs.junit.jupiter.api) + testImplementation(libs.mockito.core) + testRuntimeOnly(libs.junit.jupiter.engine) } javadoc { @@ -149,24 +151,18 @@ test { } } -extensions.getByType(JavaPluginExtension).with { - withJavadocJar() - withSourcesJar() -} +mavenPublishing { + publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) -def publishing = extensions.getByType(PublishingExtension) -publishing.repositories { - maven { - credentials { - username findProperty('OSSRH_USERNAME') as String - password findProperty('OSSRH_PASSWORD') as String - } - url = 'https://oss.sonatype.org/service/local/staging/deploy/maven2' + def signingInMemoryKey = findProperty("ORG_GRADLE_PROJECT_signingInMemoryKey") + def signingInMemoryKeyPassword = findProperty("ORG_GRADLE_PROJECT_signingInMemoryKeyPassword") + if (signingInMemoryKey && signingInMemoryKeyPassword) { + signAllPublications() } -} -def publication = publishing.publications.create("main", MavenPublication) { - from(components.getByName("java")) + configure(new JavaLibrary(new JavadocJar.Javadoc(), true)) + + coordinates(project.group as String, project.name, project.version as String) pom { name.set("ConfigCat PublicApi Java Client") @@ -198,11 +194,3 @@ def publication = publishing.publications.create("main", MavenPublication) { } } -signing { - def signingKey = findProperty("SIGNING_KEY") - def signingPassphrase = findProperty("SIGNING_PASSPHRASE") - if (signingKey && signingPassphrase) { - useInMemoryPgpKeys(signingKey as String, signingPassphrase as String) - sign publication - } -} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..35e0905 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,43 @@ +[versions] +spotless = "6.11.0" +maven-publish = "0.31.0" +android-gradle = "2.3.+" +android-maven-gradle-plugin = "2.1" +swagger-annotations = "1.6.8" +findbugs = "3.0.2" +okhttp = "4.12.0" +gson = "2.9.1" +gson-fire = "1.9.0" +javax-jsr-api = "1.1.1" +javax-rs-api = "2.1.1" +jackson-databind-nullable = "0.2.6" +jackson-core = "2.15.0-rc1" +commons-lang3 = "3.12.0" +jakarta_annotation_version = "1.3.5" +junit-jupiter = "5.10.2" +mockito-core = "3.12.4" + +[libraries] +android-gradle = { module = "com.android.tools.build:gradle", version.ref = "android-gradle" } +android-maven-gradle-plugin = { module = "com.github.dcendents:android-maven-gradle-plugin", version.ref = "android-maven-gradle-plugin" } +spotless-gradle-plugin = { module = "com.diffplug.spotless:spotless-plugin-gradle", version.ref = "spotless" } +swagger-annotations = { module = "io.swagger:swagger-annotations", version.ref = "swagger-annotations" } +findbugs-jsr305 = { module = "com.google.code.findbugs:jsr305", version.ref = "findbugs" } +okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } +logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttp" } +gson = { module = "com.google.code.gson:gson", version.ref = "gson" } +gson-fire = { module = "io.gsonfire:gson-fire", version.ref = "gson-fire" } +jsr311-api = { module = "javax.ws.rs:jsr311-api", version.ref = "javax-jsr-api" } +javax-ws-rs-api = { module = "javax.ws.rs:javax.ws.rs-api", version.ref = "javax-rs-api" } +jackson-databind-nullable = { module = "org.openapitools:jackson-databind-nullable", version.ref = "jackson-databind-nullable" } +jackson-core = { module = "com.fasterxml.jackson.core:jackson-core", version.ref = "jackson-core" } +commons-lang3 = { module = "org.apache.commons:commons-lang3", version.ref = "commons-lang3" } +jakarta-annotation-api = { module = "jakarta.annotation:jakarta.annotation-api", version.ref = "jakarta_annotation_version" } +junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit-jupiter" } +junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit-jupiter" } +mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockito-core" } + +[plugins] +spotless = { id = "com.diffplug.spotless", version.ref = "spotless" } +mavenPublish = { id = "com.vanniktech.maven.publish", version.ref = "maven-publish" } +