9
9
package org .elasticsearch .gradle ;
10
10
11
11
import com .github .jengelman .gradle .plugins .shadow .ShadowBasePlugin ;
12
- import com .github .jengelman .gradle .plugins .shadow .ShadowExtension ;
12
+ import com .github .jengelman .gradle .plugins .shadow .ShadowPlugin ;
13
13
import groovy .util .Node ;
14
14
import groovy .util .NodeList ;
15
15
import org .elasticsearch .gradle .info .BuildParams ;
26
26
import org .gradle .api .plugins .JavaPlugin ;
27
27
import org .gradle .api .publish .PublishingExtension ;
28
28
import org .gradle .api .publish .maven .MavenPublication ;
29
+ import org .gradle .api .publish .maven .plugins .MavenPublishPlugin ;
29
30
import org .gradle .api .publish .maven .tasks .GenerateMavenPom ;
30
31
import org .gradle .api .tasks .SourceSet ;
31
32
import org .gradle .api .tasks .TaskProvider ;
32
33
import org .gradle .api .tasks .bundling .Jar ;
33
34
import org .gradle .language .base .plugins .LifecycleBasePlugin ;
34
-
35
35
import java .util .concurrent .Callable ;
36
36
37
37
import static org .elasticsearch .gradle .util .GradleUtils .maybeConfigure ;
@@ -41,13 +41,21 @@ public class PublishPlugin implements Plugin<Project> {
41
41
@ Override
42
42
public void apply (Project project ) {
43
43
project .getPluginManager ().apply (BasePlugin .class );
44
- project .getPluginManager ().apply ("nebula.maven-nebula-publish" );
44
+ project .getPluginManager ().apply (MavenPublishPlugin . class );
45
45
project .getPluginManager ().apply (PomValidationPrecommitPlugin .class );
46
+ configurePublications (project );
46
47
configureJavadocJar (project );
47
48
configureSourcesJar (project );
48
49
configurePomGeneration (project );
49
50
}
50
51
52
+ private void configurePublications (Project project ) {
53
+ PublishingExtension publishingExtension = project .getExtensions ().getByType (PublishingExtension .class );
54
+ 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 ));
57
+ }
58
+
51
59
private static String getArchivesBaseName (Project project ) {
52
60
return project .getConvention ().getPlugin (BasePluginConvention .class ).getArchivesBaseName ();
53
61
}
@@ -73,7 +81,6 @@ private static void configurePomGeneration(Project project) {
73
81
PublishingExtension publishing = project .getExtensions ().getByType (PublishingExtension .class );
74
82
final var mavenPublications = publishing .getPublications ().withType (MavenPublication .class );
75
83
addNameAndDescriptiontoPom (project , mavenPublications );
76
- configurePomWithShadowPlugin (project , publishing );
77
84
78
85
mavenPublications .all (publication -> {
79
86
// Add git origin info to generated POM files for internal builds
@@ -93,27 +100,25 @@ private static void addNameAndDescriptiontoPom(Project project, NamedDomainObjec
93
100
}));
94
101
}
95
102
96
- private static void configurePomWithShadowPlugin (Project project , PublishingExtension publishing ) {
97
- project .getPluginManager ().withPlugin ("com.github.johnrengelman.shadow" , plugin -> {
98
- MavenPublication publication = publishing .getPublications ().maybeCreate ("shadow" , MavenPublication .class );
99
- ShadowExtension shadow = project .getExtensions ().getByType (ShadowExtension .class );
100
- shadow .component (publication );
101
- // Workaround for https://github.com/johnrengelman/shadow/issues/334
102
- // Here we manually add any project dependencies in the "shadow" configuration to our generated POM
103
- publication .getPom ().withXml (xml -> {
104
- Node root = xml .asNode ();
105
- Node dependenciesNode = (Node ) ((NodeList ) root .get ("dependencies" )).get (0 );
106
- project .getConfigurations ().getByName (ShadowBasePlugin .getCONFIGURATION_NAME ()).getAllDependencies ().all (dependency -> {
107
- if (dependency instanceof ProjectDependency ) {
108
- Node dependencyNode = dependenciesNode .appendNode ("dependency" );
109
- dependencyNode .appendNode ("groupId" , dependency .getGroup ());
110
- ProjectDependency projectDependency = (ProjectDependency ) dependency ;
111
- String artifactId = getArchivesBaseName (projectDependency .getDependencyProject ());
112
- dependencyNode .appendNode ("artifactId" , artifactId );
113
- dependencyNode .appendNode ("version" , dependency .getVersion ());
114
- dependencyNode .appendNode ("scope" , "compile" );
115
- }
116
- });
103
+ 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
+ }
117
122
});
118
123
});
119
124
}
0 commit comments