Skip to content

Commit 68337ff

Browse files
authored
[Gradle] Update shadow plugin (#116826) (#116877)
- The shadow plugin has changed ownership and plugin id. - Make some formatting of poms more reproducible (cherry picked from commit def490e)
1 parent 46a350d commit 68337ff

File tree

22 files changed

+135
-69
lines changed

22 files changed

+135
-69
lines changed

build-conventions/build.gradle

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ import org.gradle.plugins.ide.eclipse.model.SourceFolder
1212

1313
buildscript {
1414
repositories {
15-
maven {
16-
url 'https://jitpack.io'
17-
}
1815
mavenCentral()
1916
}
2017
}
@@ -70,10 +67,6 @@ gradlePlugin {
7067
}
7168

7269
repositories {
73-
maven {
74-
url 'https://jitpack.io'
75-
}
76-
7770
mavenCentral()
7871
gradlePluginPortal()
7972
}

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

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,19 @@
99

1010
package org.elasticsearch.gradle.internal.conventions;
1111

12-
import org.elasticsearch.gradle.internal.conventions.precommit.PomValidationPrecommitPlugin;
12+
import groovy.util.Node;
13+
1314
import com.github.jengelman.gradle.plugins.shadow.ShadowExtension;
1415
import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin;
15-
import groovy.util.Node;
16-
import org.elasticsearch.gradle.internal.conventions.util.Util;
16+
1717
import org.elasticsearch.gradle.internal.conventions.info.GitInfo;
18+
import org.elasticsearch.gradle.internal.conventions.precommit.PomValidationPrecommitPlugin;
19+
import org.elasticsearch.gradle.internal.conventions.util.Util;
20+
import org.gradle.api.Action;
1821
import org.gradle.api.NamedDomainObjectSet;
1922
import org.gradle.api.Plugin;
2023
import org.gradle.api.Project;
24+
import org.gradle.api.Task;
2125
import org.gradle.api.XmlProvider;
2226
import org.gradle.api.file.ProjectLayout;
2327
import org.gradle.api.plugins.BasePlugin;
@@ -35,11 +39,12 @@
3539
import org.gradle.api.tasks.bundling.Jar;
3640
import org.gradle.initialization.layout.BuildLayout;
3741
import org.gradle.language.base.plugins.LifecycleBasePlugin;
42+
import org.w3c.dom.Element;
3843

39-
import javax.inject.Inject;
4044
import java.io.File;
4145
import java.util.Map;
4246
import java.util.concurrent.Callable;
47+
import javax.inject.Inject;
4348

4449
public class PublishPlugin implements Plugin<Project> {
4550

@@ -113,19 +118,22 @@ private void configurePomGeneration(Project project) {
113118
var archivesBaseName = providerFactory.provider(() -> getArchivesBaseName(extensions));
114119
var projectVersion = providerFactory.provider(() -> project.getVersion());
115120
var generateMavenPoms = project.getTasks().withType(GenerateMavenPom.class);
116-
generateMavenPoms.configureEach(
117-
pomTask -> pomTask.setDestination(
121+
generateMavenPoms.configureEach(pomTask -> {
122+
pomTask.setDestination(
118123
(Callable<String>) () -> String.format(
119124
"%s/distributions/%s-%s.pom",
120125
projectLayout.getBuildDirectory().get().getAsFile().getPath(),
121126
archivesBaseName.get(),
122127
projectVersion.get()
123128
)
124-
)
125-
);
129+
);
130+
pomTask.doFirst(t -> pomTask.getPom().withXml(xml -> formatDependencies(xml)));
131+
});
132+
126133
var publishing = extensions.getByType(PublishingExtension.class);
127134
final var mavenPublications = publishing.getPublications().withType(MavenPublication.class);
128-
addNameAndDescriptiontoPom(project, mavenPublications);
135+
136+
addNameAndDescriptionToPom(project, mavenPublications);
129137
mavenPublications.configureEach(publication -> {
130138
// Add git origin info to generated POM files for internal builds
131139
publication.getPom().withXml(xml -> addScmInfo(xml, gitInfo.get()));
@@ -135,11 +143,26 @@ private void configurePomGeneration(Project project) {
135143
});
136144
}
137145

138-
private void addNameAndDescriptiontoPom(Project project, NamedDomainObjectSet<MavenPublication> mavenPublications) {
146+
/**
147+
* just ensure we put dependencies to the end. more a cosmetic thing than anything else
148+
* */
149+
private void formatDependencies(XmlProvider xml) {
150+
Element rootElement = xml.asElement();
151+
var dependencies = rootElement.getElementsByTagName("dependencies");
152+
if (dependencies.getLength() == 1 && dependencies.item(0) != null) {
153+
org.w3c.dom.Node item = dependencies.item(0);
154+
rootElement.removeChild(item);
155+
rootElement.appendChild(item);
156+
}
157+
}
158+
159+
private void addNameAndDescriptionToPom(Project project, NamedDomainObjectSet<MavenPublication> mavenPublications) {
139160
var name = project.getName();
140161
var description = providerFactory.provider(() -> project.getDescription() != null ? project.getDescription() : "");
141162
mavenPublications.configureEach(p -> p.getPom().withXml(xml -> {
142163
var root = xml.asNode();
164+
// Node versionNode = root.get("version");
165+
// versionNode.plus(1, "name", name);
143166
root.appendNode("name", name);
144167
root.appendNode("description", description.get());
145168
}));

build-tools-internal/build.gradle

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -258,9 +258,6 @@ tasks.named('licenseHeaders').configure {
258258
*****************************************************************************/
259259

260260
repositories {
261-
maven {
262-
url 'https://jitpack.io'
263-
}
264261
mavenCentral()
265262
gradlePluginPortal()
266263
}

build-tools-internal/settings.gradle

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
pluginManagement {
22
repositories {
3-
maven {
4-
url 'https://jitpack.io'
5-
}
63
mavenCentral()
74
gradlePluginPortal()
85
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class ElasticsearchJavadocPluginFuncTest extends AbstractGradleFuncTest {
7373
buildFile << """
7474
plugins {
7575
id 'elasticsearch.java-doc'
76-
id 'com.github.johnrengelman.shadow' version '7.1.2'
76+
id 'com.gradleup.shadow'
7777
id 'java'
7878
}
7979
group = 'org.acme.depending'

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

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
9696
plugins {
9797
id 'elasticsearch.java'
9898
id 'elasticsearch.publish'
99-
id 'com.github.johnrengelman.shadow'
99+
id 'com.gradleup.shadow'
100100
}
101101
102102
repositories {
@@ -117,7 +117,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
117117
}
118118
version = "1.0"
119119
group = 'org.acme'
120-
description = 'some description'
120+
description = 'shadowed project'
121121
"""
122122

123123
when:
@@ -137,7 +137,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
137137
<artifactId>hello-world</artifactId>
138138
<version>1.0</version>
139139
<name>hello-world</name>
140-
<description>some description</description>
140+
<description>shadowed project</description>
141141
<url>unknown</url>
142142
<scm>
143143
<url>unknown</url>
@@ -186,7 +186,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
186186
plugins {
187187
id 'elasticsearch.java'
188188
id 'elasticsearch.publish'
189-
id 'com.github.johnrengelman.shadow'
189+
id 'com.gradleup.shadow'
190190
}
191191
192192
dependencies {
@@ -206,7 +206,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
206206
group = 'org.acme'
207207
}
208208
209-
description = 'some description'
209+
description = 'with shadowed dependencies'
210210
"""
211211

212212
when:
@@ -226,7 +226,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
226226
<artifactId>hello-world</artifactId>
227227
<version>1.0</version>
228228
<name>hello-world</name>
229-
<description>some description</description>
229+
<description>with shadowed dependencies</description>
230230
<url>unknown</url>
231231
<scm>
232232
<url>unknown</url>
@@ -277,13 +277,13 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
277277
plugins {
278278
id 'elasticsearch.internal-es-plugin'
279279
id 'elasticsearch.publish'
280-
id 'com.github.johnrengelman.shadow'
280+
id 'com.gradleup.shadow'
281281
}
282282
283283
esplugin {
284284
name = 'hello-world-plugin'
285285
classname 'org.acme.HelloWorldPlugin'
286-
description = "custom project description"
286+
description = "shadowed es plugin"
287287
}
288288
289289
publishing {
@@ -324,7 +324,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
324324
<artifactId>hello-world-plugin</artifactId>
325325
<version>1.0</version>
326326
<name>hello-world</name>
327-
<description>custom project description</description>
327+
<description>shadowed es plugin</description>
328328
<url>unknown</url>
329329
<scm>
330330
<url>unknown</url>
@@ -353,7 +353,6 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
353353
<url>https://www.elastic.co</url>
354354
</developer>
355355
</developers>
356-
<dependencies/>
357356
</project>"""
358357
)
359358
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public void execute(Task task) {
8282
}
8383
});
8484
});
85-
project.getPluginManager().withPlugin("com.github.johnrengelman.shadow", p -> {
85+
project.getPluginManager().withPlugin("com.gradleup.shadow", p -> {
8686
project.getTasks().withType(ShadowJar.class).configureEach(shadowJar -> {
8787
/*
8888
* Replace the default "-all" classifier with null

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ public void execute(Task t) {
193193
* If this project builds a shadow JAR than any unit tests should test against that artifact instead of
194194
* compiled class output and dependency jars. This better emulates the runtime environment of consumers.
195195
*/
196-
project.getPluginManager().withPlugin("com.github.johnrengelman.shadow", p -> {
196+
project.getPluginManager().withPlugin("com.gradleup.shadow", p -> {
197197
if (test.getName().equals(JavaPlugin.TEST_TASK_NAME)) {
198198
// Remove output class files and any other dependencies from the test classpath, since the shadow JAR includes these
199199
SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class);

build-tools/build.gradle

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@
99

1010
buildscript {
1111
repositories {
12-
maven {
13-
url 'https://jitpack.io'
14-
}
1512
mavenCentral()
1613
}
1714
}
@@ -117,9 +114,6 @@ configurations {
117114
}
118115

119116
repositories {
120-
maven {
121-
url 'https://jitpack.io'
122-
}
123117
mavenCentral()
124118
gradlePluginPortal()
125119
}

build-tools/src/main/java/org/elasticsearch/gradle/plugin/BasePluginBuildPlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ private static CopySpec createBundleSpec(
167167
copySpec.exclude("plugin-security.codebases");
168168
});
169169
bundleSpec.from(
170-
(Callable<TaskProvider<Task>>) () -> project.getPluginManager().hasPlugin("com.github.johnrengelman.shadow")
170+
(Callable<TaskProvider<Task>>) () -> project.getPluginManager().hasPlugin("com.gradleup.shadow")
171171
? project.getTasks().named("shadowJar")
172172
: project.getTasks().named("jar")
173173
);

0 commit comments

Comments
 (0)