Merge branch '2.4.x'

Closes gh-24527
pull/24532/head
Andy Wilkinson 4 years ago
commit 4dd0e9ae54

@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -47,15 +47,8 @@ class KotlinPluginAction implements PluginApplicationAction {
}
@Override
@SuppressWarnings("unchecked")
public Class<? extends Plugin<? extends Project>> getPluginClass() {
try {
return (Class<? extends Plugin<? extends Project>>) Class
.forName("org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapper");
}
catch (Throwable ex) {
return null;
}
return KotlinPluginWrapper.class;
}
}

@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -30,9 +30,11 @@ interface PluginApplicationAction extends Action<Project> {
/**
* The class of the {@code Plugin} that, when applied, will trigger the execution of
* this action. May return {@code null} if the plugin class is not on the classpath.
* @return the plugin class or {@code null}
* this action.
* @return the plugin class
* @throws ClassNotFoundException if the plugin class cannot be found
* @throws NoClassDefFoundError if an error occurs when defining the plugin class
*/
Class<? extends Plugin<? extends Project>> getPluginClass();
Class<? extends Plugin<? extends Project>> getPluginClass() throws ClassNotFoundException, NoClassDefFoundError;
}

@ -18,6 +18,7 @@ package org.springframework.boot.gradle.plugin;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
import org.gradle.api.GradleException;
import org.gradle.api.Plugin;
@ -119,11 +120,19 @@ public class SpringBootPlugin implements Plugin<Project> {
new WarPluginAction(singlePublishedArtifact), new MavenPluginAction(bootArchives.getUploadTaskName()),
new DependencyManagementPluginAction(), new ApplicationPluginAction(), new KotlinPluginAction());
for (PluginApplicationAction action : actions) {
Class<? extends Plugin<? extends Project>> pluginClass = action.getPluginClass();
if (pluginClass != null) {
project.getPlugins().withType(pluginClass, (plugin) -> action.execute(project));
withPluginClassOfAction(action,
(pluginClass) -> project.getPlugins().withType(pluginClass, (plugin) -> action.execute(project)));
}
}
private void withPluginClassOfAction(PluginApplicationAction action,
Consumer<Class<? extends Plugin<? extends Project>>> consumer) {
try {
consumer.accept(action.getPluginClass());
}
catch (Throwable ex) {
// Plugin class unavailable. Continue.
}
}
}

Loading…
Cancel
Save