diff --git a/buildSrc/src/main/groovy/io/spring/gradle/convention/ArtifactoryPlugin.groovy b/buildSrc/src/main/groovy/io/spring/gradle/convention/ArtifactoryPlugin.groovy index 8ee5f9e9..07f01449 100644 --- a/buildSrc/src/main/groovy/io/spring/gradle/convention/ArtifactoryPlugin.groovy +++ b/buildSrc/src/main/groovy/io/spring/gradle/convention/ArtifactoryPlugin.groovy @@ -46,7 +46,6 @@ class ArtifactoryPlugin implements Plugin { } defaults { publications('mavenJava') - publishConfigs('archives') } } } diff --git a/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomPlugin.groovy b/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomPlugin.groovy index 4729f9fc..b74888ca 100644 --- a/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomPlugin.groovy +++ b/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomPlugin.groovy @@ -17,51 +17,29 @@ package io.spring.gradle.convention import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.api.plugins.JavaPlatformPlugin +import org.gradle.api.plugins.PluginManager +import org.springframework.gradle.CopyPropertiesPlugin import org.springframework.gradle.maven.SpringMavenPlugin /** + * Gradle {@link Plugin} used to generate a Maven BOM for the Gradle {@link Project}. + * * @author Rob Winch * @author John Blum + * @see org.gradle.api.Plugin + * @see org.gradle.api.Project */ class MavenBomPlugin implements Plugin { - static String MAVEN_BOM_TASK_NAME = "mavenBom" - @Override void apply(Project project) { - // Declares a new configuration that will be used to associate with Project artifacts - // (namely, the Maven BOM file). - project.configurations { - archives - } + PluginManager pluginManager = project.getPluginManager(); - project.group = project.rootProject.group - project.plugins.apply(SpringMavenPlugin) + pluginManager.apply(JavaPlatformPlugin) + pluginManager.apply(SpringMavenPlugin) + pluginManager.apply(CopyPropertiesPlugin) - Utils.skipProjectWithSonarQubePlugin(project) - - project.task(MAVEN_BOM_TASK_NAME, type: MavenBomTask, group: 'Generate', - description: 'Configures the Maven POM as a Maven BOM (Bill of Materials)') - - project.tasks.artifactoryPublish.dependsOn project.mavenBom - project.tasks.publishToMavenLocal.dependsOn project.mavenBom - project.tasks.publishToOssrh.dependsOn project.mavenBom - - project.rootProject.allprojects.each { p -> - p.plugins.withType(SpringMavenPlugin) { - if (!project.name.equals(p.name)) { - //println("Maven BOM Project [${p.name}]") - project.mavenBom.projects.add(p) - } - } - } - - // TODO: Shouldn't this be { archives project.mavenBom } according to: - // https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html#getArtifacts-- - // TODO: Is this even necessary since this block is defined in MavenBomTask? - project.artifacts { - archives project.mavenBom.bomFile - } } } diff --git a/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomTask.groovy b/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomTask.groovy deleted file mode 100644 index 8eed1162..00000000 --- a/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomTask.groovy +++ /dev/null @@ -1,75 +0,0 @@ -package io.spring.gradle.convention - -import org.gradle.api.DefaultTask -import org.gradle.api.Project -import org.gradle.api.publish.maven.MavenPublication -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.Internal -import org.gradle.api.tasks.OutputFile -import org.gradle.api.tasks.TaskAction - -class MavenBomTask extends DefaultTask { - - @OutputFile - File bomFile - - @Internal - Set projects = [] - - @Input - Set getProjectNames() { - return projects*.name as Set - } - - MavenBomTask() { - - this.group = "Generate" - this.description = "Generates a Maven BOM (Bill of Materials)." + - " See https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies" - this.projects = project.subprojects - this.bomFile = project.file("${->project.buildDir}/maven-bom/${->project.name}-${->project.version}.txt") - this.outputs.upToDateWhen { false } - } - - @TaskAction - void configureBom() { - - bomFile.parentFile.mkdirs() - bomFile.write("Maven BOM (Bill of Materials)" - + " See https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies") - - // TODO: Shouldn't this be { archives project.mavenBom } according to: - // https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html#getArtifacts-- - project.artifacts { - // Workaround GRADLE-2406 by attaching text artifact - archives(bomFile) - } - - def pomDependencyManagementNode = { - delegate.dependencyManagement { - delegate.dependencies { - projects.sort { dep -> "$dep.group:$dep.name" }.each { p -> - delegate.dependency { - delegate.groupId p.group - delegate.artifactId p.name - delegate.version p.version - } - } - } - } - } - - project.publishing { - publications { - mavenJava(MavenPublication) { - pom { - packaging = "pom" - withXml { - asNode().children().last() + pomDependencyManagementNode - } - } - } - } - } - } -} diff --git a/spring-geode-bom/spring-geode-bom.gradle b/spring-geode-bom/spring-geode-bom.gradle index 5963d586..936c1fe4 100644 --- a/spring-geode-bom/spring-geode-bom.gradle +++ b/spring-geode-bom/spring-geode-bom.gradle @@ -1 +1,13 @@ +import io.spring.gradle.convention.SpringModulePlugin + apply plugin: 'io.spring.convention.maven-bom' + +dependencies { + constraints { + project.rootProject.allprojects { p -> + p.plugins.withType(SpringModulePlugin) { + api p + } + } + } +}