diff --git a/build.gradle b/build.gradle index 53ffbde..89818c1 100644 --- a/build.gradle +++ b/build.gradle @@ -1,14 +1,25 @@ plugins { id "java-library" - id "org.grails.internal.grails-plugin-publish" id "org.grails.grails-gsp" id "org.grails.grails-plugin" + id 'maven-publish' + id 'io.github.gradle-nexus.publish-plugin' } version = project.projectVersion group = 'org.grails.plugins' +ext.set('isSnapshot', projectVersion.endsWith('-SNAPSHOT')) +ext.set('isReleaseVersion', !isSnapshot) + +ext.set('signing.keyId', project.findProperty('signing.keyId') ?: System.getenv('SIGNING_KEY')) +ext.set('signing.secretKeyRingFile', project.findProperty('signing.secretKeyRingFile') ?: System.getenv('SIGNING_PASSPHRASE') ?: "${System.properties['user.home']}${File.separator}.gnupg${File.separator}secring.gpg") +ext.set('signing.password', project.findProperty("signing.password") ?: System.getenv('SIGNING_PASSPHRASE')) + + + + allprojects { repositories { @@ -23,13 +34,21 @@ allprojects { } } -grailsPublish { - userOrg = 'grails' - githubSlug = 'grails/redis' - license { - name = 'Apache-2.0' +if (isReleaseVersion) { + apply plugin: "io.github.gradle-nexus.publish-plugin" + + nexusPublishing { + repositories { + sonatype { + def ossUser = System.getenv("SONATYPE_USERNAME") ?: project.hasProperty("sonatypeOssUsername") ? project.sonatypeOssUsername : '' + def ossPass = System.getenv("SONATYPE_PASSWORD") ?: project.hasProperty("sonatypeOssPassword") ? project.sonatypeOssPassword : '' + def ossStagingProfileId = System.getenv("SONATYPE_STAGING_PROFILE_ID") ?: project.hasProperty("sonatypeOssStagingProfileId") ? project.sonatypeOssStagingProfileId : '' + nexusUrl = uri("https://s01.oss.sonatype.org/service/local/") + snapshotRepositoryUrl = uri("https://s01.oss.sonatype.org/content/repositories/snapshots/") + username = ossUser + password = ossPass + stagingProfileId = ossStagingProfileId + } } - title = 'Grails Redis Plugin' - desc = 'This Plugin provides access to Redis and various utilities(service, annotations, etc) for caching.' - developers = [puneetbehl: 'Puneet Behl'] -} \ No newline at end of file +} +} diff --git a/gradle.properties b/gradle.properties index 56ea549..84da559 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,6 +18,15 @@ jredisVersion=5.2.0 scaffoldingVersion=6.0.0-SNAPSHOT xmlBindApiVersion=4.0.2 +title=Grails Redis Plugin +authors=Puneet Behl +projectDesc=This Plugin provides access to Redis and various utilities(service, annotations, etc) for caching. +projectUrl=https://github.com/grails/grails-redis +githubSlug=/grails/grails-redis +githubBranch=5.0.x +developers=Christian Oestreich, Puneet Behl + + org.gradle.caching=true org.gradle.daemon=true org.gradle.parallel=true diff --git a/plugin/build.gradle b/plugin/build.gradle index cdfd099..c0d78b5 100644 --- a/plugin/build.gradle +++ b/plugin/build.gradle @@ -3,6 +3,8 @@ plugins { id "eclipse" id "idea" id "org.grails.grails-plugin" + id 'signing' + id 'maven-publish' } version = project.projectVersion @@ -14,6 +16,38 @@ java { } } +def isGrailsPlugin = project.group == 'org.grails.plugins' +def pomInfo = { + delegate.name project.title + delegate.description project.projectDesc + delegate.url 'https://github.com/grails/grails-redis' + + delegate.licenses { + delegate.license { + delegate.name 'Apache-2.0' + delegate.url 'https://www.apache.org/licenses/LICENSE-2.0.txt' + delegate.distribution 'repo' + } + } + + delegate.scm { + delegate.url "scm:git@github.com:${githubSlug}.git" + delegate.connection "https://github.com${githubSlug}" + delegate.developerConnection "scm:git:ssh://github.com:${githubSlug}.git" + } + + if (developers) { + delegate.developers { + for (dev in developers.split(',')) { + delegate.developer { + delegate.id dev.toLowerCase().replace(' ', '') + delegate.name dev.strip() + } + } + } + } +} + dependencyManagement { imports { mavenBom "org.grails:grails-bom:$grailsVersion" @@ -55,6 +89,10 @@ dependencies { } } +groovydoc { + groovyClasspath += configurations.documentation +} + test { useJUnitPlatform() } @@ -63,3 +101,57 @@ jar { exclude "application.groovy" exclude "src/test/projects/**" } + +publishing { + + if (isSnapshot) { + repositories { + maven { + credentials { + def u = System.getenv("ARTIFACTORY_USERNAME") ?: project.findProperty("artifactoryPublishUsername") ?: '' + def p = System.getenv("ARTIFACTORY_PASSWORD") ?: project.findProperty("artifactoryPublishPassword") ?: '' + username = u + password = p + } + url = isGrailsPlugin ? + uri('https://repo.grails.org/grails/plugins3-snapshots-local') : + uri('https://repo.grails.org/grails/libs-snapshots-local') + } + } + } + + publications { + maven(MavenPublication) { + + groupId = project.group + version = project.version + + from components.java + + artifact sourcesJar + artifact javadocJar + + pom.withXml { + + def pomNode = asNode() + pomNode.children().last() + pomInfo + + // dependency management shouldn't be included + try { pomNode.dependencyManagement.replaceNode({}) } catch (Throwable ignore) {} + } + } + } +} + +if (isReleaseVersion) { + afterEvaluate { + signing { + required = { isReleaseVersion && gradle.taskGraph.hasTask('publish') } + sign(publishing.publications.maven) + } + } +} + +tasks.withType(Sign) { + onlyIf { isReleaseVersion } +} diff --git a/settings.gradle b/settings.gradle index 284801e..346d936 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,35 +1,34 @@ plugins { - id "com.gradle.develocity" version "3.18.1" + id "com.gradle.enterprise" version '3.16.2' id 'com.gradle.common-custom-user-data-gradle-plugin' version '2.0.2' } -def isCI = System.getenv('CI') != null -def isLocal = !isCI -def isAuthenticated = System.getenv('DEVELOCITY_ACCESS_KEY') != null -def isBuildCacheAuthenticated = - System.getenv('DEVELOCITY_BUILD_CACHE_NODE_USER') != null && - System.getenv('DEVELOCITY_BUILD_CACHE_NODE_KEY') != null - -develocity { +gradleEnterprise { server = 'https://ge.grails.org' buildScan { - publishing.onlyIf { isAuthenticated } - uploadInBackground = isLocal + publishAlwaysIf(System.getenv('CI') == 'true') + publishIfAuthenticated() + uploadInBackground = System.getenv('CI') == null + capture { + taskInputFiles = true + } } } buildCache { - local { enabled = isLocal } - remote(develocity.buildCache) { - push = isCI && isBuildCacheAuthenticated + local { enabled = System.getenv('CI') != 'true' } + remote(HttpBuildCache) { + push = System.getenv('CI') == 'true' enabled = true - usernameAndPassword( - System.getenv('DEVELOCITY_BUILD_CACHE_NODE_USER') ?: '', - System.getenv('DEVELOCITY_BUILD_CACHE_NODE_KEY') ?: '' - ) + url = 'https://ge.grails.org/cache/' + credentials { + username = System.getenv('GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER') + password = System.getenv('GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY') + } } } + rootProject.name = "grails-redis" include "examples-redis-demo"