Skip to content

Commit 9117d2e

Browse files
committed
Make plugin compatible with versions of Gradle without Upload task
Closes gh-337
1 parent 4ca62e5 commit 9117d2e

File tree

1 file changed

+46
-25
lines changed

1 file changed

+46
-25
lines changed

src/main/java/io/spring/gradle/dependencymanagement/DependencyManagementPlugin.java

+46-25
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.gradle.api.Plugin;
2424
import org.gradle.api.Project;
2525
import org.gradle.api.Task;
26+
import org.gradle.api.artifacts.maven.MavenResolver;
2627
import org.gradle.api.publish.PublishingExtension;
2728
import org.gradle.api.publish.maven.MavenPublication;
2829
import 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

Comments
 (0)