Skip to content

Commit c9b5499

Browse files
committed
[7.17] [Build] Add support for publishing to maven central (elastic#128659)
1 parent b3cfe8f commit c9b5499

File tree

8 files changed

+103
-14
lines changed

8 files changed

+103
-14
lines changed

.buildkite/scripts/dra-workflow.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ echo --- Building release artifacts
5252
$BUILD_SNAPSHOT_ARG \
5353
buildReleaseArtifacts \
5454
exportCompressedDockerImages \
55+
zipAggregation \
5556
:distribution:generateDependenciesReport
5657

5758
PATH="$PATH:${JAVA_HOME}/bin" # Required by the following script

build-conventions/build.gradle

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ plugins {
2424
group = "org.elasticsearch"
2525
// This project contains Checkstyle rule implementations used by IDEs which use a Java 11 runtime
2626
java {
27-
targetCompatibility = 11
28-
sourceCompatibility = 11
27+
targetCompatibility = 17
28+
sourceCompatibility = 17
2929
}
3030

3131
gradlePlugin {
@@ -73,7 +73,9 @@ dependencies {
7373
api buildLibs.maven.model
7474
api buildLibs.shadow.plugin
7575
api buildLibs.apache.rat
76-
compileOnly buildLibs.checkstyle
76+
api buildLibs.nmcp
77+
78+
compileOnly buildLibs.checkstyle
7779
api(buildLibs.spotless.plugin) {
7880
exclude module: "groovy-xml"
7981
}

build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/PublishPlugin.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import com.github.jengelman.gradle.plugins.shadow.ShadowExtension;
1414
import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin;
1515

16+
import nmcp.NmcpPlugin;
17+
1618
import org.elasticsearch.gradle.internal.conventions.info.GitInfo;
1719
import org.elasticsearch.gradle.internal.conventions.precommit.PomValidationPrecommitPlugin;
1820
import org.elasticsearch.gradle.internal.conventions.util.Util;
@@ -27,6 +29,7 @@
2729
import org.gradle.api.plugins.ExtensionContainer;
2830
import org.gradle.api.plugins.JavaLibraryPlugin;
2931
import org.gradle.api.plugins.JavaPlugin;
32+
import org.gradle.api.plugins.JavaPluginExtension;
3033
import org.gradle.api.provider.MapProperty;
3134
import org.gradle.api.provider.ProviderFactory;
3235
import org.gradle.api.publish.PublishingExtension;
@@ -64,6 +67,7 @@ public void apply(Project project) {
6467
project.getPluginManager().apply(MavenPublishPlugin.class);
6568
project.getPluginManager().apply(PomValidationPrecommitPlugin.class);
6669
project.getPluginManager().apply(LicensingPlugin.class);
70+
project.getPluginManager().apply(NmcpPlugin.class);
6771
configureJavadocJar(project);
6872
configureSourcesJar(project);
6973
configurePomGeneration(project);
@@ -81,6 +85,11 @@ private void configurePublications(Project project) {
8185
publication.from(project.getComponents().getByName("java"));
8286
}
8387
});
88+
project.getPlugins().withType(JavaPlugin.class, plugin -> {
89+
var javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class);
90+
javaPluginExtension.withJavadocJar();
91+
javaPluginExtension.withSourcesJar();
92+
});
8493
@SuppressWarnings("unchecked")
8594
var projectLicenses = (MapProperty<String, String>) project.getExtensions().getExtraProperties().get("projectLicenses");
8695
publication.getPom().withXml(xml -> {

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/BuildPluginFuncTest.groovy

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ class BuildPluginFuncTest extends AbstractGradleFuncTest {
2424
Redistribution and use in source and binary forms, with or without
2525
modification, are permitted provided that the following conditions
2626
are met:
27-
27+
2828
1. Redistributions of source code must retain the above copyright
2929
notice, this list of conditions and the following disclaimer.
3030
2. Redistributions in binary form must reproduce the above copyright
3131
notice, this list of conditions and the following disclaimer in the
3232
documentation and/or other materials provided with the distribution.
3333
3. The name of the author may not be used to endorse or promote products
3434
derived from this software without specific prior written permission.
35-
35+
3636
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
3737
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
3838
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
@@ -51,11 +51,11 @@ class BuildPluginFuncTest extends AbstractGradleFuncTest {
5151
id 'java'
5252
id 'elasticsearch.global-build-info'
5353
}
54-
54+
5555
apply plugin:'elasticsearch.build'
5656
group = 'org.acme'
5757
description = "some example project"
58-
58+
5959
repositories {
6060
maven {
6161
name = "local-test"
@@ -66,7 +66,7 @@ class BuildPluginFuncTest extends AbstractGradleFuncTest {
6666
}
6767
mavenCentral()
6868
}
69-
69+
7070
dependencies {
7171
jarHell 'org.elasticsearch:elasticsearch-core:current'
7272
}
@@ -82,7 +82,7 @@ class BuildPluginFuncTest extends AbstractGradleFuncTest {
8282
* Side Public License, v 1.
8383
*/
8484
package org.elasticsearch;
85-
85+
8686
public class SampleClass {
8787
}
8888
""".stripIndent()
@@ -114,8 +114,6 @@ class BuildPluginFuncTest extends AbstractGradleFuncTest {
114114
then:
115115
result.task(":assemble").outcome == TaskOutcome.SUCCESS
116116
file("build/distributions/hello-world.jar").exists()
117-
file("build/distributions/hello-world-javadoc.jar").exists()
118-
file("build/distributions/hello-world-sources.jar").exists()
119117
assertValidJar(file("build/distributions/hello-world.jar"))
120118
}
121119

@@ -138,7 +136,7 @@ class BuildPluginFuncTest extends AbstractGradleFuncTest {
138136
}
139137
licenseFile.set(file("LICENSE"))
140138
noticeFile.set(file("NOTICE"))
141-
139+
142140
tasks.named("forbiddenApisMain").configure {enabled = false }
143141
tasks.named('checkstyleMain').configure { enabled = false }
144142
tasks.named('loggerUsageCheck').configure { enabled = false }
@@ -151,7 +149,6 @@ class BuildPluginFuncTest extends AbstractGradleFuncTest {
151149
result.task(":licenseHeaders").outcome == TaskOutcome.SUCCESS
152150
result.task(":forbiddenPatterns").outcome == TaskOutcome.SUCCESS
153151
result.task(":splitPackagesAudit").outcome == TaskOutcome.SUCCESS
154-
result.task(":validateElasticPom").outcome == TaskOutcome.SUCCESS
155152
// disabled but check for being on the task graph
156153
result.task(":forbiddenApisMain").outcome == TaskOutcome.SKIPPED
157154
result.task(":checkstyleMain").outcome == TaskOutcome.SKIPPED

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BuildPlugin.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
package org.elasticsearch.gradle.internal;
1010

11+
import org.elasticsearch.gradle.internal.conventions.LicensingPlugin;
1112
import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin;
1213
import org.elasticsearch.gradle.internal.precommit.InternalPrecommitTasks;
1314
import org.elasticsearch.gradle.internal.snyk.SnykDependencyMonitoringGradlePlugin;
@@ -57,7 +58,7 @@ public void apply(final Project project) {
5758
}
5859

5960
project.getPluginManager().apply("elasticsearch.java");
60-
project.getPluginManager().apply("elasticsearch.publish");
61+
project.getPluginManager().apply(LicensingPlugin.class);
6162
project.getPluginManager().apply(ElasticsearchJavadocPlugin.class);
6263
project.getPluginManager().apply(DependenciesInfoPlugin.class);
6364
project.getPluginManager().apply(SnykDependencyMonitoringGradlePlugin.class);

build.gradle

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ plugins {
5757
id 'elasticsearch.release-tools'
5858
id 'elasticsearch.auto-backporting'
5959
id 'elasticsearch.versions'
60+
id 'com.gradleup.nmcp.aggregation'
6061
}
6162

6263
/**
@@ -94,6 +95,22 @@ def filterIntermediatePatches = { List<Version> versions ->
9495
versions.groupBy {"${it.major}.${it.minor}"}.values().collect {it.max()}
9596
}
9697

98+
nmcpAggregation {
99+
// this breaks project isolation but this is broken in elasticsearch build atm anyhow.
100+
publishAllProjectsProbablyBreakingProjectIsolation()
101+
}
102+
103+
tasks.named('zipAggregation').configure {
104+
// put this in a place that works well with our DRA infrastructure
105+
archiveFileName.unset();
106+
archiveBaseName.set("elasticsearch-maven-aggregation")
107+
archiveVersion.set(VersionProperties.elasticsearch)
108+
destinationDirectory.set(layout.buildDirectory.dir("distributions"));
109+
110+
dependsOn gradle.includedBuild('build-tools').task(':zipElasticPublication')
111+
from(zipTree(gradle.includedBuild('build-tools').task(':zipElasticPublication').resolveTask().archiveFile.get()))
112+
}
113+
97114
tasks.register("updateCIBwcVersions") {
98115
def writeVersions = { File file, List<Version> versions ->
99116
file.text = ""

gradle/build.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ asm = "9.3"
33
jackson = "2.10.4"
44
junit5 = "5.8.1"
55
spock = "2.1-groovy-3.0"
6+
nmcp = "0.1.5"
67

78
[libraries]
89
ant = "org.apache.ant:ant:1.10.12"
@@ -32,6 +33,7 @@ junit5-platform-launcher = "org.junit.platform:junit-platform-launcher:1.8.1"
3233
junit5-vintage = { group = "org.junit.vintage", name="junit-vintage-engine", version.ref="junit5" }
3334
maven-model = "org.apache.maven:maven-model:3.6.2"
3435
mockito-core = "org.mockito:mockito-core:1.9.5"
36+
nmcp = { group = "com.gradleup.nmcp", name = "nmcp", version.ref="nmcp" }
3537
nebula-info = "com.netflix.nebula:gradle-info-plugin:11.3.3"
3638
reflections = "org.reflections:reflections:0.9.12"
3739
shadow-plugin = "com.gradleup.shadow:shadow-gradle-plugin:8.3.5"

gradle/verification-metadata.xml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -984,6 +984,16 @@
984984
<sha256 value="989cfe6b6a47b530971add6d55c043ecc1eded4144a66a981be5770ffee3de1c" origin="Generated by Gradle"/>
985985
</artifact>
986986
</component>
987+
<component group="com.gradleup.gratatouille" name="gratatouille-runtime" version="0.0.8">
988+
<artifact name="gratatouille-runtime-0.0.8.jar">
989+
<sha256 value="03eefe964f5d06b2263a28724e3d3503c0670ea1846c208afa918d86d4d08472" origin="Generated by Gradle"/>
990+
</artifact>
991+
</component>
992+
<component group="com.gradleup.nmcp" name="nmcp" version="0.1.5">
993+
<artifact name="nmcp-0.1.5.jar">
994+
<sha256 value="9c823adc282e96b206956e4a63cb1552bb2bbcec6010bbb6aa9c3d18ecd3f915" origin="Generated by Gradle"/>
995+
</artifact>
996+
</component>
987997
<component group="com.gradleup.shadow" name="shadow-gradle-plugin" version="8.3.5">
988998
<artifact name="shadow-gradle-plugin-8.3.5.jar">
989999
<sha256 value="54e08dd20a82775e3317a4725a1a5e4ec8b1b1c0f346de702a49d9ed4815b735" origin="Generated by Gradle"/>
@@ -1169,6 +1179,11 @@
11691179
<sha256 value="88ac9fd1bb51f82bcc664cc1eb9c225c90dc4389d660231b4cc737bebfe7d0aa" origin="Generated by Gradle"/>
11701180
</artifact>
11711181
</component>
1182+
<component group="com.squareup.okhttp3" name="logging-interceptor" version="4.12.0">
1183+
<artifact name="logging-interceptor-4.12.0.jar">
1184+
<sha256 value="f3e8d5f0903c250c2b55d2f47fcfe008e80634385da8385161c7a63aaed0c74c" origin="Generated by Gradle"/>
1185+
</artifact>
1186+
</component>
11721187
<component group="com.squareup.okhttp3" name="okhttp" version="4.12.0">
11731188
<artifact name="okhttp-4.12.0.jar">
11741189
<sha256 value="b1050081b14bb7a3a7e55a4d3ef01b5dcfabc453b4573a4fc019767191d5f4e0" origin="Generated by Gradle"/>
@@ -1189,6 +1204,11 @@
11891204
<sha256 value="67543f0736fc422ae927ed0e504b98bc5e269fda0d3500579337cb713da28412" origin="Generated by Gradle"/>
11901205
</artifact>
11911206
</component>
1207+
<component group="com.squareup.okio" name="okio-jvm" version="3.8.0">
1208+
<artifact name="okio-jvm-3.8.0.jar">
1209+
<sha256 value="88fb79f6fe1a462acf0a3bd2576ba1525c29f29825efeceec70a747ac1c6fc90" origin="Generated by Gradle"/>
1210+
</artifact>
1211+
</component>
11921212
<component group="com.sun.activation" name="jakarta.activation" version="1.2.1">
11931213
<artifact name="jakarta.activation-1.2.1.jar">
11941214
<sha256 value="d84d4ba8b55cdb7fdcbb885e6939386367433f56f5ab8cfdc302a7c3587fa92b" origin="Generated by Gradle"/>
@@ -4031,6 +4051,11 @@
40314051
<sha256 value="55e989c512b80907799f854309f3bc7782c5b3d13932442d0379d5c472711504" origin="Generated by Gradle"/>
40324052
</artifact>
40334053
</component>
4054+
<component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="2.1.20">
4055+
<artifact name="kotlin-stdlib-2.1.20.jar">
4056+
<sha256 value="1bcc74e8ce84e2c25eaafde10f1248349cce3062b6e36978cbeec610db1e930a" origin="Generated by Gradle"/>
4057+
</artifact>
4058+
</component>
40344059
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="1.5.10">
40354060
<artifact name="kotlin-stdlib-common-1.5.10.jar">
40364061
<sha256 value="d958ce94beda85f865829fb95012804866db7d5246615fd71a2f5aabca3e7994" origin="Generated by Gradle"/>
@@ -4056,6 +4081,16 @@
40564081
<sha256 value="75ed5680aaacfd94b93c3695d8eb8bfa7cf83893d2e46ca9788345c52d393f8a" origin="Generated by Gradle"/>
40574082
</artifact>
40584083
</component>
4084+
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="1.8.0">
4085+
<artifact name="kotlin-stdlib-jdk7-1.8.0.jar">
4086+
<sha256 value="4c889d1d9803f5f2eb6c1592a6b7e62369ac7660c9eee15aba16fec059163666" origin="Generated by Gradle"/>
4087+
</artifact>
4088+
</component>
4089+
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="1.8.21">
4090+
<artifact name="kotlin-stdlib-jdk7-1.8.21.jar">
4091+
<sha256 value="33d148db0e11debd0d90677d28242bced907f9c77730000fd597867089039d86" origin="Generated by Gradle"/>
4092+
</artifact>
4093+
</component>
40594094
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="1.9.10">
40604095
<artifact name="kotlin-stdlib-jdk7-1.9.10.jar">
40614096
<sha256 value="ac6361bf9ad1ed382c2103d9712c47cdec166232b4903ed596e8876b0681c9b7" origin="Generated by Gradle"/>
@@ -4066,11 +4101,36 @@
40664101
<sha256 value="270b05aa3cc92f157a7ed71ff09cf136ee3fb18cbac94f71a12931009c49f550" origin="Generated by Gradle"/>
40674102
</artifact>
40684103
</component>
4104+
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="1.8.0">
4105+
<artifact name="kotlin-stdlib-jdk8-1.8.0.jar">
4106+
<sha256 value="05b62804441b0c9a1920b6b7d5cf7329a4e24b6258478e32b1f046ca01900946" origin="Generated by Gradle"/>
4107+
</artifact>
4108+
</component>
4109+
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="1.8.21">
4110+
<artifact name="kotlin-stdlib-jdk8-1.8.21.jar">
4111+
<sha256 value="3db752a30074f06ee6c57984aa6f27da44f4d2bbc7f5442651f6988f1cb2b7d7" origin="Generated by Gradle"/>
4112+
</artifact>
4113+
</component>
40694114
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="1.9.10">
40704115
<artifact name="kotlin-stdlib-jdk8-1.9.10.jar">
40714116
<sha256 value="a4c74d94d64ce1abe53760fe0389dd941f6fc558d0dab35e47c085a11ec80f28" origin="Generated by Gradle"/>
40724117
</artifact>
40734118
</component>
4119+
<component group="org.jetbrains.kotlin" name="kotlin-test" version="2.0.0">
4120+
<artifact name="kotlin-test-2.0.0.jar">
4121+
<sha256 value="8438cc11769da31cbb4445dfafd12c08cf4015daa387963106f121a85a56864c" origin="Generated by Gradle"/>
4122+
</artifact>
4123+
</component>
4124+
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core-jvm" version="1.8.1">
4125+
<artifact name="kotlinx-serialization-core-jvm-1.8.1.jar">
4126+
<sha256 value="3565b6d4d789bf70683c45566944287fc1d8dc75c23d98bd87d01059cc76f2b3" origin="Generated by Gradle"/>
4127+
</artifact>
4128+
</component>
4129+
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json-jvm" version="1.8.1">
4130+
<artifact name="kotlinx-serialization-json-jvm-1.8.1.jar">
4131+
<sha256 value="8769e5647557e3700919c32d508f5c5dad53c5d8234cd10846354fbcff14aa24" origin="Generated by Gradle"/>
4132+
</artifact>
4133+
</component>
40744134
<component group="org.jline" name="jline" version="3.9.0">
40754135
<artifact name="jline-3.9.0.jar">
40764136
<sha256 value="d2b986fd15d05e0b900faba776c1de9b4dc4a4fcdfeaa12a8ab8fb2b290ed527" origin="Generated by Gradle"/>

0 commit comments

Comments
 (0)