23
23
import org .gradle .api .Plugin ;
24
24
import org .gradle .api .Project ;
25
25
import org .gradle .api .Task ;
26
+ import org .gradle .api .artifacts .maven .MavenResolver ;
26
27
import org .gradle .api .publish .PublishingExtension ;
27
28
import org .gradle .api .publish .maven .MavenPublication ;
28
29
import org .gradle .api .publish .maven .plugins .MavenPublishPlugin ;
@@ -54,31 +55,9 @@ public void apply(final Project project) {
54
55
private void configurePomCustomization (final Project project ,
55
56
DependencyManagementExtension dependencyManagementExtension ) {
56
57
final PomDependencyManagementConfigurer pomConfigurer = dependencyManagementExtension .getPomConfigurer ();
57
- project .getTasks ().withType (Upload .class , new Action <Upload >() {
58
-
59
- @ Override
60
- public void execute (final Upload upload ) {
61
- upload .doFirst (new Action <Task >() {
62
-
63
- @ Override
64
- @ SuppressWarnings ("deprecation" )
65
- public void execute (Task task ) {
66
- upload .getRepositories ().withType (org .gradle .api .artifacts .maven .MavenResolver .class ,
67
- new Action <org .gradle .api .artifacts .maven .MavenResolver >() {
68
-
69
- @ Override
70
- public void execute (org .gradle .api .artifacts .maven .MavenResolver mavenResolver ) {
71
- mavenResolver .getPom ().withXml (pomConfigurer );
72
- }
73
-
74
- });
75
- }
76
-
77
- });
78
-
79
- }
80
-
81
- });
58
+ if (classIsPresent ("org.gradle.api.tasks.Upload" )) {
59
+ project .getTasks ().withType (Upload .class , new UploadPomConfigurationAction (pomConfigurer ));
60
+ }
82
61
project .getPlugins ().withType (MavenPublishPlugin .class , new Action <MavenPublishPlugin >() {
83
62
84
63
@ Override
@@ -89,6 +68,17 @@ public void execute(MavenPublishPlugin mavenPublishPlugin) {
89
68
});
90
69
}
91
70
71
+ private boolean classIsPresent (String name ) {
72
+ try {
73
+ ClassLoader classLoader = DependencyManagementPlugin .class .getClassLoader ();
74
+ Class .forName (name , false , classLoader );
75
+ return true ;
76
+ }
77
+ catch (Throwable ex ) {
78
+ return false ;
79
+ }
80
+ }
81
+
92
82
private void configurePublishingExtension (Project project , final PomDependencyManagementConfigurer extension ) {
93
83
project .getExtensions ().configure (PublishingExtension .class , new Action <PublishingExtension >() {
94
84
@@ -112,4 +102,35 @@ public void execute(MavenPublication mavenPublication) {
112
102
});
113
103
}
114
104
105
+ private static final class UploadPomConfigurationAction implements Action <Upload > {
106
+
107
+ private final PomDependencyManagementConfigurer pomConfigurer ;
108
+
109
+ private UploadPomConfigurationAction (PomDependencyManagementConfigurer pomConfigurer ) {
110
+ this .pomConfigurer = pomConfigurer ;
111
+ }
112
+
113
+ @ Override
114
+ public void execute (final Upload upload ) {
115
+ upload .doFirst (new Action <Task >() {
116
+
117
+ @ Override
118
+ @ SuppressWarnings ("deprecation" )
119
+ public void execute (Task task ) {
120
+ upload .getRepositories ().withType (MavenResolver .class , new Action <MavenResolver >() {
121
+
122
+ @ Override
123
+ public void execute (org .gradle .api .artifacts .maven .MavenResolver mavenResolver ) {
124
+ mavenResolver .getPom ().withXml (UploadPomConfigurationAction .this .pomConfigurer );
125
+ }
126
+
127
+ });
128
+ }
129
+
130
+ });
131
+
132
+ }
133
+
134
+ }
135
+
115
136
}
0 commit comments