|
8 | 8 |
|
9 | 9 | package org.elasticsearch.gradle;
|
10 | 10 |
|
11 |
| -import com.github.jengelman.gradle.plugins.shadow.ShadowBasePlugin; |
| 11 | +import com.github.jengelman.gradle.plugins.shadow.ShadowExtension; |
12 | 12 | import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin;
|
13 | 13 | import groovy.util.Node;
|
14 |
| -import groovy.util.NodeList; |
15 | 14 | import org.elasticsearch.gradle.info.BuildParams;
|
16 | 15 | import org.elasticsearch.gradle.precommit.PomValidationPrecommitPlugin;
|
17 | 16 | import org.elasticsearch.gradle.util.Util;
|
|
20 | 19 | import org.gradle.api.Project;
|
21 | 20 | import org.gradle.api.Task;
|
22 | 21 | import org.gradle.api.XmlProvider;
|
23 |
| -import org.gradle.api.artifacts.ProjectDependency; |
24 | 22 | import org.gradle.api.plugins.BasePlugin;
|
25 | 23 | import org.gradle.api.plugins.BasePluginConvention;
|
26 | 24 | import org.gradle.api.plugins.JavaPlugin;
|
@@ -52,8 +50,13 @@ public void apply(Project project) {
|
52 | 50 | private void configurePublications(Project project) {
|
53 | 51 | PublishingExtension publishingExtension = project.getExtensions().getByType(PublishingExtension.class);
|
54 | 52 | MavenPublication publication = publishingExtension.getPublications().create("elastic", MavenPublication.class);
|
55 |
| - project.getPlugins().withType(JavaPlugin.class, plugin -> publication.from(project.getComponents().getByName("java"))); |
56 |
| - project.getPlugins().withType(ShadowPlugin.class, plugin -> configureWithShadowPlugin(project, publication)); |
| 53 | + project.afterEvaluate(project1 -> { |
| 54 | + if (project1.getPlugins().hasPlugin(ShadowPlugin.class)) { |
| 55 | + configureWithShadowPlugin(project1, publication); |
| 56 | + } else if (project1.getPlugins().hasPlugin(JavaPlugin.class)) { |
| 57 | + publication.from(project.getComponents().getByName("java")); |
| 58 | + } |
| 59 | + }); |
57 | 60 | }
|
58 | 61 |
|
59 | 62 | private static String getArchivesBaseName(Project project) {
|
@@ -101,26 +104,8 @@ private static void addNameAndDescriptiontoPom(Project project, NamedDomainObjec
|
101 | 104 | }
|
102 | 105 |
|
103 | 106 | private static void configureWithShadowPlugin(Project project, MavenPublication publication) {
|
104 |
| - // Workaround for https://github.com/johnrengelman/shadow/issues/334 |
105 |
| - // Here we manually add any project dependencies in the "shadow" configuration to our generated POM |
106 |
| - publication.getPom().withXml(xml -> { |
107 |
| - Node root = xml.asNode(); |
108 |
| - NodeList dependencies = (NodeList) root.get("dependencies"); |
109 |
| - Node dependenciesNode = (dependencies.size() == 0) |
110 |
| - ? root.appendNode("dependencies") |
111 |
| - : (Node) ((NodeList) root.get("dependencies")).get(0); |
112 |
| - project.getConfigurations().getByName(ShadowBasePlugin.getCONFIGURATION_NAME()).getAllDependencies().all(dependency -> { |
113 |
| - if (dependency instanceof ProjectDependency) { |
114 |
| - Node dependencyNode = dependenciesNode.appendNode("dependency"); |
115 |
| - dependencyNode.appendNode("groupId", dependency.getGroup()); |
116 |
| - ProjectDependency projectDependency = (ProjectDependency) dependency; |
117 |
| - String artifactId = getArchivesBaseName(projectDependency.getDependencyProject()); |
118 |
| - dependencyNode.appendNode("artifactId", artifactId); |
119 |
| - dependencyNode.appendNode("version", dependency.getVersion()); |
120 |
| - dependencyNode.appendNode("scope", "compile"); |
121 |
| - } |
122 |
| - }); |
123 |
| - }); |
| 107 | + ShadowExtension shadow = project.getExtensions().getByType(ShadowExtension.class); |
| 108 | + shadow.component(publication); |
124 | 109 | }
|
125 | 110 |
|
126 | 111 | private static void addScmInfo(XmlProvider xml) {
|
|
0 commit comments