|
18 | 18 | package io.github.git.commit.id.gradle.plugin; |
19 | 19 |
|
20 | 20 | import groovy.lang.Closure; |
| 21 | + |
| 22 | +import java.util.Arrays; |
21 | 23 | import java.util.Map; |
22 | 24 | import java.util.Properties; |
23 | 25 | import org.gradle.api.Plugin; |
24 | 26 | import org.gradle.api.Project; |
25 | 27 | import org.gradle.api.plugins.ExtensionAware; |
| 28 | +import org.gradle.api.plugins.JavaPlugin; |
| 29 | +import org.gradle.api.plugins.scala.ScalaPlugin; |
| 30 | +import org.gradle.api.tasks.SourceSet; |
| 31 | +import org.gradle.api.tasks.SourceSetContainer; |
26 | 32 | import pl.project13.core.CommitIdPropertiesOutputFormat; |
27 | 33 | import pl.project13.core.GitCommitIdExecutionException; |
28 | 34 | import pl.project13.core.util.GenericFileManager; |
@@ -163,6 +169,18 @@ public void apply(Project project) { |
163 | 169 | GitCommitIdPluginGenerationTask.class); |
164 | 170 | task.onlyIf(ignore -> extension.getSkip().get() == false); |
165 | 171 |
|
| 172 | + // React to external plugins |
| 173 | + // See https://docs.gradle.org/current/userguide/implementing_gradle_plugins.html#reacting_to_plugins |
| 174 | + project.getTasks().named(JavaPlugin.CLASSES_TASK_NAME).configure( |
| 175 | + classesTask -> classesTask.dependsOn(task)); |
| 176 | + |
| 177 | + project.getPlugins().withType(JavaPlugin.class, javaPlugin -> { |
| 178 | + SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class); |
| 179 | + SourceSet main = sourceSets.getByName(SourceSet.MAIN_SOURCE_SET_NAME); |
| 180 | + main.getJava().setSrcDirs(Arrays.asList(task.getOutput().getAsFile().get())); |
| 181 | + }); |
| 182 | + |
| 183 | + // Expose the generated properties |
166 | 184 | project |
167 | 185 | .getExtensions() |
168 | 186 | .getExtraProperties() |
|
0 commit comments