2323import org .gradle .api .Plugin ;
2424import org .gradle .api .Project ;
2525import org .gradle .api .Task ;
26+ import org .gradle .api .artifacts .maven .MavenResolver ;
2627import org .gradle .api .publish .PublishingExtension ;
2728import org .gradle .api .publish .maven .MavenPublication ;
2829import org .gradle .api .publish .maven .plugins .MavenPublishPlugin ;
@@ -54,31 +55,9 @@ public void apply(final Project project) {
5455 private void configurePomCustomization (final Project project ,
5556 DependencyManagementExtension dependencyManagementExtension ) {
5657 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+ }
8261 project .getPlugins ().withType (MavenPublishPlugin .class , new Action <MavenPublishPlugin >() {
8362
8463 @ Override
@@ -89,6 +68,17 @@ public void execute(MavenPublishPlugin mavenPublishPlugin) {
8968 });
9069 }
9170
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+
9282 private void configurePublishingExtension (Project project , final PomDependencyManagementConfigurer extension ) {
9383 project .getExtensions ().configure (PublishingExtension .class , new Action <PublishingExtension >() {
9484
@@ -112,4 +102,35 @@ public void execute(MavenPublication mavenPublication) {
112102 });
113103 }
114104
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+
115136}
0 commit comments