ProjectPlugin.groovy
01 /*
02  * SPDX-License-Identifier: Apache-2.0
03  *
04  * Copyright 2018-2019 Andres Almiray.
05  *
06  * Licensed under the Apache License, Version 2.0 (the "License");
07  * you may not use this file except in compliance with the License.
08  * You may obtain a copy of the License at
09  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 package org.kordamp.gradle.plugin.project
19 
20 import com.github.benmanes.gradle.versions.VersionsPlugin
21 import groovy.transform.CompileStatic
22 import org.gradle.api.Plugin
23 import org.gradle.api.Project
24 import org.kordamp.gradle.plugin.apidoc.ApidocPlugin
25 import org.kordamp.gradle.plugin.base.BasePlugin
26 import org.kordamp.gradle.plugin.bintray.BintrayPlugin
27 import org.kordamp.gradle.plugin.buildinfo.BuildInfoPlugin
28 import org.kordamp.gradle.plugin.jacoco.JacocoPlugin
29 import org.kordamp.gradle.plugin.jar.JarPlugin
30 import org.kordamp.gradle.plugin.licensing.LicensingPlugin
31 import org.kordamp.gradle.plugin.minpom.MinPomPlugin
32 import org.kordamp.gradle.plugin.publishing.PublishingPlugin
33 import org.kordamp.gradle.plugin.source.SourceJarPlugin
34 import org.kordamp.gradle.plugin.sourcehtml.SourceHtmlPlugin
35 import org.kordamp.gradle.plugin.stats.SourceStatsPlugin
36 import org.kordamp.gradle.plugin.testing.TestingPlugin
37 
38 import static org.kordamp.gradle.plugin.base.BasePlugin.isRootProject
39 
40 /**
41  * Aggregator for all Kordamp plugins.
42  *
43  @author Andres Almiray
44  @since 0.1.0
45  */
46 @CompileStatic
47 class ProjectPlugin implements Plugin<Project> {
48     Project project
49 
50     void apply(Project project) {
51         this.project = project
52 
53         if (isRootProject(project)) {
54             applyPlugins(project)
55             project.childProjects.values().each {
56                 applyPlugins(it)
57             }
58         else {
59             applyPlugins(project)
60         }
61     }
62 
63     static void applyPlugins(Project project) {
64         BasePlugin.applyIfMissing(project)
65         JacocoPlugin.applyIfMissing(project)
66         LicensingPlugin.applyIfMissing(project)
67         BuildInfoPlugin.applyIfMissing(project)
68         SourceJarPlugin.applyIfMissing(project)
69         ApidocPlugin.applyIfMissing(project)
70         MinPomPlugin.applyIfMissing(project)
71         JarPlugin.applyIfMissing(project)
72         PublishingPlugin.applyIfMissing(project)
73         SourceStatsPlugin.applyIfMissing(project)
74         SourceHtmlPlugin.applyIfMissing(project)
75         BintrayPlugin.applyIfMissing(project)
76         TestingPlugin.applyIfMissing(project)
77 
78         project.plugins.apply(VersionsPlugin)
79     }
80 }