From a5bdcf207422e1eeaf8e93ebd8fd57eab13d272d Mon Sep 17 00:00:00 2001 From: David Venable Date: Tue, 16 Apr 2024 12:57:25 -0500 Subject: [PATCH] Moves the Maven publish Gradle configuration into a Gradle convention plugin. This splits the build logic for publication and allows different projects to determine whether they publish to Maven rather than having to track this with conditionals in the root Gradle project. (#4421) Signed-off-by: David Venable --- build.gradle | 55 ++----------------- buildSrc/build.gradle | 1 + .../main/groovy/data-prepper.publish.gradle | 52 ++++++++++++++++++ data-prepper-api/build.gradle | 4 ++ data-prepper-core/build.gradle | 4 ++ data-prepper-event/build.gradle | 4 ++ data-prepper-main/build.gradle | 4 ++ data-prepper-pipeline-parser/build.gradle | 4 ++ data-prepper-plugin-framework/build.gradle | 4 ++ data-prepper-plugins/build.gradle | 5 +- data-prepper-test-common/build.gradle | 1 + data-prepper-test-event/build.gradle | 4 ++ 12 files changed, 89 insertions(+), 53 deletions(-) create mode 100644 buildSrc/src/main/groovy/data-prepper.publish.gradle diff --git a/build.gradle b/build.gradle index 3b47063bc4..3e508098ae 100644 --- a/build.gradle +++ b/build.gradle @@ -20,9 +20,6 @@ allprojects { apply plugin: 'checkstyle' apply plugin: 'com.diffplug.spotless' apply plugin: 'com.github.jk1.dependency-license-report' - apply plugin: 'maven-publish' - - group = 'org.opensearch.dataprepper' ext { mavenPublicationRootFile = file("${rootProject.buildDir}/m2") @@ -42,53 +39,10 @@ allprojects { } } - if(project.name.startsWith('data-prepper') || project.parent != null && project.parent.name.equals('data-prepper-plugins')) { - project.plugins.withType(JavaPlugin).configureEach { - java { - withJavadocJar() - withSourcesJar() - } - - afterEvaluate { - project.publishing { - repositories { - maven { - url "file://${mavenPublicationRootFile.absolutePath}" - } - } - publications { - mavenJava(MavenPublication) { - from project.components.findByName("java") ?: project.components.findByName("javaLibrary") - - groupId = project.group - artifactId = project.name - version = project.version - - pom { - name = project.name - description = "Data Prepper project: ${project.name}" - url = 'https://github.com/opensearch-project/data-prepper' - licenses { - license { - name = 'The Apache Software License, Version 2.0' - url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' - distribution = 'repo' - } - } - developers { - developer { - name = 'OpenSearch' - url = 'https://github.com/opensearch-project' - } - } - scm { - url = 'https://github.com/opensearch-project/data-prepper' - } - } - } - } - } - } + project.plugins.withType(JavaPlugin).configureEach { + java { + withJavadocJar() + withSourcesJar() } } @@ -99,7 +53,6 @@ allprojects { subprojects { apply plugin: 'java' - apply plugin: 'maven-publish' apply plugin: 'jacoco' java { diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 9d29afb944..382c8c02c1 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -6,4 +6,5 @@ plugins { id 'java-gradle-plugin' id 'java' + id 'groovy-gradle-plugin' } diff --git a/buildSrc/src/main/groovy/data-prepper.publish.gradle b/buildSrc/src/main/groovy/data-prepper.publish.gradle new file mode 100644 index 0000000000..1b36f25975 --- /dev/null +++ b/buildSrc/src/main/groovy/data-prepper.publish.gradle @@ -0,0 +1,52 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +plugins { + id 'maven-publish' +} + +group = 'org.opensearch.dataprepper' + +afterEvaluate { + project.publishing { + repositories { + maven { + url "file://${mavenPublicationRootFile.absolutePath}" + } + } + publications { + mavenJava(MavenPublication) { + from project.components.findByName('java') ?: project.components.findByName('javaLibrary') + + groupId = project.group + artifactId = project.name + version = project.version + + pom { + name = project.name + description = "Data Prepper project: ${project.name}" + url = 'https://github.com/opensearch-project/data-prepper' + licenses { + license { + name = 'The Apache Software License, Version 2.0' + url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' + distribution = 'repo' + } + } + developers { + developer { + name = 'OpenSearch' + url = 'https://github.com/opensearch-project' + } + } + scm { + url = 'https://github.com/opensearch-project/data-prepper' + } + } + } + } + } +} + diff --git a/data-prepper-api/build.gradle b/data-prepper-api/build.gradle index 84ebe8e708..d4c10dfa19 100644 --- a/data-prepper-api/build.gradle +++ b/data-prepper-api/build.gradle @@ -3,6 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ +plugins { + id 'data-prepper.publish' +} + dependencies { implementation 'io.micrometer:micrometer-core' implementation 'com.fasterxml.jackson.core:jackson-databind' diff --git a/data-prepper-core/build.gradle b/data-prepper-core/build.gradle index 10e7732936..84081f0095 100644 --- a/data-prepper-core/build.gradle +++ b/data-prepper-core/build.gradle @@ -3,6 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ +plugins { + id 'data-prepper.publish' +} + sourceSets { main { resources { diff --git a/data-prepper-event/build.gradle b/data-prepper-event/build.gradle index 28e662b5c9..168d330579 100644 --- a/data-prepper-event/build.gradle +++ b/data-prepper-event/build.gradle @@ -3,6 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ +plugins { + id 'data-prepper.publish' +} + group = 'org.opensearch.dataprepper.core' dependencies { diff --git a/data-prepper-main/build.gradle b/data-prepper-main/build.gradle index ac4497bc98..04af8f2e07 100644 --- a/data-prepper-main/build.gradle +++ b/data-prepper-main/build.gradle @@ -3,6 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ +plugins { + id 'data-prepper.publish' +} + sourceSets { main { resources { diff --git a/data-prepper-pipeline-parser/build.gradle b/data-prepper-pipeline-parser/build.gradle index 58d8982e4e..e5c3d5b07e 100644 --- a/data-prepper-pipeline-parser/build.gradle +++ b/data-prepper-pipeline-parser/build.gradle @@ -3,6 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ +plugins { + id 'data-prepper.publish' +} + group = 'org.opensearch.dataprepper.core' dependencies { diff --git a/data-prepper-plugin-framework/build.gradle b/data-prepper-plugin-framework/build.gradle index b26d9565a9..f77212a6b2 100644 --- a/data-prepper-plugin-framework/build.gradle +++ b/data-prepper-plugin-framework/build.gradle @@ -3,6 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ +plugins { + id 'data-prepper.publish' +} + group = 'org.opensearch.dataprepper.core' dependencies { diff --git a/data-prepper-plugins/build.gradle b/data-prepper-plugins/build.gradle index 4e2beb7670..6e60c970cc 100644 --- a/data-prepper-plugins/build.gradle +++ b/data-prepper-plugins/build.gradle @@ -7,10 +7,11 @@ plugins { id 'java-library' } -allprojects { +subprojects { + apply plugin: 'data-prepper.publish' group = 'org.opensearch.dataprepper.plugins' } dependencies { subprojects.forEach { api project(':data-prepper-plugins:' + it.name) } -} \ No newline at end of file +} diff --git a/data-prepper-test-common/build.gradle b/data-prepper-test-common/build.gradle index 4ed664b393..121d33196b 100644 --- a/data-prepper-test-common/build.gradle +++ b/data-prepper-test-common/build.gradle @@ -5,6 +5,7 @@ plugins { id 'java' + id 'data-prepper.publish' } group = 'org.opensearch.dataprepper.test' diff --git a/data-prepper-test-event/build.gradle b/data-prepper-test-event/build.gradle index 488ba706b3..39b9d65951 100644 --- a/data-prepper-test-event/build.gradle +++ b/data-prepper-test-event/build.gradle @@ -3,6 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ +plugins { + id 'data-prepper.publish' +} + group = 'org.opensearch.dataprepper.test' dependencies {