From ddf7ecf36bd74dbb577463bf6a2d1f7d77e754a7 Mon Sep 17 00:00:00 2001 From: Basil Peace Date: Wed, 10 Apr 2019 22:15:08 +0300 Subject: [PATCH 1/4] fix(plugin): fix error with non-existent publishPluginJar task ``` > Task with name 'publishPluginJar' not found in root project 'gradle-about-plugin'. ``` --- .../fidata/gradle/GradlePluginPlugin.groovy | 12 +--- .../org/fidata/gradle/GroovyBasePlugin.groovy | 27 ++------- .../fidata/gradle/GroovyProjectPlugin.groovy | 7 ++- .../fidata/gradle/JavaProjectPlugin.groovy | 4 +- .../org/fidata/gradle/JvmBasePlugin.groovy | 56 ++++++------------- 5 files changed, 32 insertions(+), 74 deletions(-) diff --git a/src/main/groovy/org/fidata/gradle/GradlePluginPlugin.groovy b/src/main/groovy/org/fidata/gradle/GradlePluginPlugin.groovy index 3e145d54..e5244d0a 100644 --- a/src/main/groovy/org/fidata/gradle/GradlePluginPlugin.groovy +++ b/src/main/groovy/org/fidata/gradle/GradlePluginPlugin.groovy @@ -52,7 +52,6 @@ import org.gradle.api.plugins.JavaPluginConvention import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.SourceSetContainer import org.gradle.api.tasks.TaskProvider -import org.gradle.api.tasks.bundling.Jar import org.gradle.api.tasks.testing.Test import org.gradle.plugin.devel.GradlePluginDevelopmentExtension import org.gradle.plugin.devel.tasks.ValidateTaskProperties @@ -179,16 +178,6 @@ final class GradlePluginPlugin extends AbstractProjectPlugin implements Property private void configureArtifacts() { project.plugins.findPlugin(JvmBasePlugin)?.mainPublicationName?.set 'pluginMaven' /* Hardcoded in MavenPluginPublishPlugin */ - - project.afterEvaluate { - if (project.convention.getPlugin(ProjectConvention).publicReleases) { - project.plugins.findPlugin(JvmBasePlugin)?.with { - sourcesJar.set project.tasks.withType(Jar).named(/*PublishPlugin.SOURCES_JAR_TASK_NAME*/ 'publishPluginJar') - javadocJar.set project.tasks.withType(Jar).named(/*PublishPlugin.JAVA_DOCS_TASK_NAME*/ 'publishPluginJavaDocsJar') - } - project.plugins.findPlugin(GroovyBasePlugin)?.groovydocJar?.set project.tasks.withType(Jar).named(/*PublishPlugin.GROOVY_DOCS_TASK_NAME*/ 'publishPluginGroovyDocsJar') - } - } } private void configurePublicReleases() { @@ -211,6 +200,7 @@ final class GradlePluginPlugin extends AbstractProjectPlugin implements Property extension.website = projectConvention.websiteUrl.get() extension.vcsUrl = rootProjectConvention.vcsUrl.get() } + project.tasks.named(/* WORKAROUND: PublishPlugin.BASE_TASK_NAME has private scope */ 'publishPlugins').configure { Task publishPlugins -> publishPlugins.onlyIf { rootProjectConvention.isRelease.get() } } diff --git a/src/main/groovy/org/fidata/gradle/GroovyBasePlugin.groovy b/src/main/groovy/org/fidata/gradle/GroovyBasePlugin.groovy index e6785c51..53e64c63 100644 --- a/src/main/groovy/org/fidata/gradle/GroovyBasePlugin.groovy +++ b/src/main/groovy/org/fidata/gradle/GroovyBasePlugin.groovy @@ -28,7 +28,6 @@ import org.fidata.gradle.internal.AbstractProjectPlugin import org.fidata.gradle.utils.PluginDependeesUtils import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.artifacts.Configuration -import org.gradle.api.provider.Property import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.bundling.Jar import org.gradle.api.tasks.compile.GroovyCompile @@ -100,34 +99,20 @@ final class GroovyBasePlugin extends AbstractProjectPlugin { */ public static final String GROOVYDOC_JAR_ARTIFACT_CLASSIFIER = 'groovydoc' - private TaskProvider defaultGroovydocJarProvider + private TaskProvider groovydocJarProvider @PackageScope - TaskProvider getDefaultGroovydocJarProvider() { - this.@defaultGroovydocJarProvider - } - - @PackageScope - private Property groovydocJar - - @PackageScope - Property getGroovydocJar() { - this.@groovydocJar + TaskProvider getGroovydocJarProvider() { + this.@groovydocJarProvider } private void configureArtifacts() { - this.@defaultGroovydocJarProvider = project.tasks.register(GROOVYDOC_JAR_TASK_NAME, Jar) { Jar defaultGroovydocJar -> - defaultGroovydocJar.archiveClassifier.set GROOVYDOC_JAR_ARTIFACT_CLASSIFIER + groovydocJarProvider = project.tasks.register(GROOVYDOC_JAR_TASK_NAME, Jar) { Jar groovydocJar -> + groovydocJar.archiveClassifier.set GROOVYDOC_JAR_ARTIFACT_CLASSIFIER } - this.@groovydocJar = project.objects.property(Jar).convention(defaultGroovydocJarProvider) project.afterEvaluate { - defaultGroovydocJarProvider.configure { Jar defaultGroovydocJar -> - defaultGroovydocJar.enabled = groovydocJar.get() == defaultGroovydocJar - null - } - - project.plugins.getPlugin(JvmBasePlugin).mainPublication.artifact groovydocJar.get() + project.plugins.getPlugin(JvmBasePlugin).mainPublication.artifact groovydocJarProvider.get() } } } diff --git a/src/main/groovy/org/fidata/gradle/GroovyProjectPlugin.groovy b/src/main/groovy/org/fidata/gradle/GroovyProjectPlugin.groovy index 586f06cd..149149cb 100644 --- a/src/main/groovy/org/fidata/gradle/GroovyProjectPlugin.groovy +++ b/src/main/groovy/org/fidata/gradle/GroovyProjectPlugin.groovy @@ -91,8 +91,11 @@ final class GroovyProjectPlugin extends AbstractProjectPlugin { } private void configureArtifacts() { - project.plugins.getPlugin(GroovyBasePlugin).defaultGroovydocJarProvider.configure { Jar defaultGroovydocJar -> - defaultGroovydocJar.from project.tasks.withType(Groovydoc).named(GROOVYDOC_TASK_NAME) + project.plugins.getPlugin(JvmBasePlugin).javadocJarProvider.configure { Jar javadocJar -> + javadocJar.enabled = false + } + project.plugins.getPlugin(GroovyBasePlugin).groovydocJarProvider.configure { Jar groovydocJar -> + groovydocJar.from project.tasks.withType(Groovydoc).named(GROOVYDOC_TASK_NAME) } } } diff --git a/src/main/groovy/org/fidata/gradle/JavaProjectPlugin.groovy b/src/main/groovy/org/fidata/gradle/JavaProjectPlugin.groovy index be198e0a..2040eff0 100644 --- a/src/main/groovy/org/fidata/gradle/JavaProjectPlugin.groovy +++ b/src/main/groovy/org/fidata/gradle/JavaProjectPlugin.groovy @@ -179,8 +179,8 @@ final class JavaProjectPlugin extends AbstractProjectPlugin { } private void configureArtifacts() { - project.plugins.getPlugin(JvmBasePlugin).defaultJavadocJarProvider.configure { Jar defaultJavadocJar -> - defaultJavadocJar.from project.tasks.withType(Javadoc).named(JAVADOC_TASK_NAME) + project.plugins.getPlugin(JvmBasePlugin).javadocJarProvider.configure { Jar javadocJar -> + javadocJar.from project.tasks.withType(Javadoc).named(JAVADOC_TASK_NAME) } } } diff --git a/src/main/groovy/org/fidata/gradle/JvmBasePlugin.groovy b/src/main/groovy/org/fidata/gradle/JvmBasePlugin.groovy index ab56aad7..143a6dec 100644 --- a/src/main/groovy/org/fidata/gradle/JvmBasePlugin.groovy +++ b/src/main/groovy/org/fidata/gradle/JvmBasePlugin.groovy @@ -493,65 +493,45 @@ final class JvmBasePlugin extends AbstractProjectPlugin implements PropertyChang mainPublication } - private TaskProvider defaultSourcesJarProvider + private TaskProvider sourcesJarProvider @PackageScope - TaskProvider getDefaultSourcesJarProvider() { - this.@defaultSourcesJarProvider + TaskProvider getSourcesJarProvider() { + this.@sourcesJarProvider } - private Property sourcesJar + private TaskProvider javadocJarProvider @PackageScope - Property getSourcesJar() { - this.@sourcesJar - } - - private TaskProvider defaultJavadocJarProvider - - @PackageScope - TaskProvider getDefaultJavadocJarProvider() { - this.@defaultJavadocJarProvider - } - - @PackageScope - private Property javadocJar - - @PackageScope - Property getJavadocJar() { - this.@javadocJar + TaskProvider getJavadocJarProvider() { + this.@javadocJarProvider } private void configureArtifacts() { this.@mainPublicationName = project.objects.property(String).convention(MAVEN_JAVA_PUBLICATION_NAME) - this.@defaultSourcesJarProvider = project.tasks.register(SOURCES_JAR_TASK_NAME, Jar) { Jar defaultSourceJar -> - defaultSourceJar.with { + this.@sourcesJarProvider = project.tasks.register(SOURCES_JAR_TASK_NAME, Jar) { Jar sourcesJar -> + sourcesJar.with { from project.convention.getPlugin(JavaPluginConvention).sourceSets.getByName(MAIN_SOURCE_SET_NAME).allSource // dependsOn archiveClassifier.set SOURCES_JAR_ARTIFACT_CLASSIFIER } } - this.@sourcesJar = project.objects.property(Jar).convention(defaultSourcesJarProvider) - this.@defaultJavadocJarProvider = project.tasks.register(JAVADOC_JAR_TASK_NAME, Jar) { Jar defaultJavadocJar -> - defaultJavadocJar.archiveClassifier.set JAVADOC_JAR_ARTIFACT_CLASSIFIER + this.@javadocJarProvider = project.tasks.register(JAVADOC_JAR_TASK_NAME, Jar) { Jar javadocJar -> + javadocJar.archiveClassifier.set JAVADOC_JAR_ARTIFACT_CLASSIFIER } - this.@javadocJar = project.objects.property(Jar).convention(defaultJavadocJarProvider) project.afterEvaluate { - defaultSourcesJarProvider.configure { Jar defaultSourcesJar -> - defaultSourcesJar.enabled = sourcesJar.get() == defaultSourcesJar - null - } - defaultJavadocJarProvider.configure { Jar defaultJavadocJar -> - defaultJavadocJar.enabled = javadocJar.get() == defaultJavadocJar - null - } - mainPublication.with { - artifact sourcesJar.get() - artifact javadocJar.get() + Jar sourcesJar = sourcesJarProvider.get() + if (sourcesJar.enabled) { + artifact sourcesJar + } + Jar javadocJar = javadocJarProvider.get() + if (javadocJar.enabled) { + artifact javadocJar + } } } From ee1e7da66e2fa1b7d9ff0047e790d0746c4c3ce1 Mon Sep 17 00:00:00 2001 From: Basil Peace Date: Wed, 10 Apr 2019 22:29:17 +0300 Subject: [PATCH 2/4] chore: update JPSL --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 9ed74e0c..8553930c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -19,7 +19,7 @@ */ //noinspection GroovyUnusedAssignment @SuppressWarnings(['UnusedVariable', 'NoDef', 'VariableTypeRequired']) -@Library('jenkins-pipeline-shared-library@v3.0.0') dummy +@Library('jenkins-pipeline-shared-library@v3.0.1') dummy defaultJvmPipeline( publicReleases: Boolean.FALSE, From 0c764734a9b845d04fccda3343fa7b2607b8d723 Mon Sep 17 00:00:00 2001 From: Basil Peace Date: Thu, 18 Apr 2019 00:03:43 +0300 Subject: [PATCH 3/4] fix: don't configure Artifactory for projects named buildSrc Workaround for jfrog/build-info#178 --- src/main/groovy/org/fidata/gradle/GradlePluginPlugin.groovy | 4 +++- src/main/groovy/org/fidata/gradle/JvmBasePlugin.groovy | 4 +++- src/main/groovy/org/fidata/gradle/ProjectPlugin.groovy | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/groovy/org/fidata/gradle/GradlePluginPlugin.groovy b/src/main/groovy/org/fidata/gradle/GradlePluginPlugin.groovy index e5244d0a..2c1ae28b 100644 --- a/src/main/groovy/org/fidata/gradle/GradlePluginPlugin.groovy +++ b/src/main/groovy/org/fidata/gradle/GradlePluginPlugin.groovy @@ -212,7 +212,9 @@ final class GradlePluginPlugin extends AbstractProjectPlugin implements Property private void configureReleases() { GString repository = "plugins-${ project.rootProject.convention.getPlugin(RootProjectConvention).isRelease.get() ? 'release' : 'snapshot' }" - project.convention.getPlugin(ArtifactoryPluginConvention).clientConfig.publisher.repoKey = "$repository-local" + if (project.name != 'buildSrc') { + project.convention.getPlugin(ArtifactoryPluginConvention).clientConfig.publisher.repoKey = "$repository-local" + } project.repositories.maven { MavenArtifactRepository mavenArtifactRepository -> mavenArtifactRepository.with { /* diff --git a/src/main/groovy/org/fidata/gradle/JvmBasePlugin.groovy b/src/main/groovy/org/fidata/gradle/JvmBasePlugin.groovy index 143a6dec..41935587 100644 --- a/src/main/groovy/org/fidata/gradle/JvmBasePlugin.groovy +++ b/src/main/groovy/org/fidata/gradle/JvmBasePlugin.groovy @@ -695,7 +695,9 @@ final class JvmBasePlugin extends AbstractProjectPlugin implements PropertyChang } private void configureReleases() { - configureArtifactory() + if (project.name != 'buildSrc') { + configureArtifactory() + } configurePublicReleases() } diff --git a/src/main/groovy/org/fidata/gradle/ProjectPlugin.groovy b/src/main/groovy/org/fidata/gradle/ProjectPlugin.groovy index dbdf8090..3612edcb 100644 --- a/src/main/groovy/org/fidata/gradle/ProjectPlugin.groovy +++ b/src/main/groovy/org/fidata/gradle/ProjectPlugin.groovy @@ -748,6 +748,8 @@ final class ProjectPlugin extends AbstractProjectPlugin { createGenerateChangelogTasks() } - configureArtifactory() + if (project.name != 'buildSrc') { + configureArtifactory() + } } } From f2def528ac4234159b5318b5db0ca0f139874ee2 Mon Sep 17 00:00:00 2001 From: Basil Peace Date: Wed, 22 May 2019 19:15:58 +0300 Subject: [PATCH 4/4] fix(base.jvm): fix public releases for subprojects ``` org.gradle.api.UnknownDomainObjectException: Extension of type 'SemanticReleasePluginExtension' does not exist. ``` --- src/main/groovy/org/fidata/gradle/JvmBasePlugin.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/groovy/org/fidata/gradle/JvmBasePlugin.groovy b/src/main/groovy/org/fidata/gradle/JvmBasePlugin.groovy index 41935587..42eedb46 100644 --- a/src/main/groovy/org/fidata/gradle/JvmBasePlugin.groovy +++ b/src/main/groovy/org/fidata/gradle/JvmBasePlugin.groovy @@ -648,7 +648,7 @@ final class JvmBasePlugin extends AbstractProjectPlugin implements PropertyChang } private void configureGithubReleases() { - GitRepo repo = project.extensions.getByType(SemanticReleasePluginExtension).repo + GitRepo repo = project.rootProject.extensions.getByType(SemanticReleasePluginExtension).repo project.afterEvaluate { /** * CRED: