|
4 | 4 | import org.gradle.api.NonNullApi;
|
5 | 5 | import org.gradle.api.Plugin;
|
6 | 6 | import org.gradle.api.Project;
|
7 |
| -import org.gradle.api.artifacts.*; |
| 7 | +import org.gradle.api.artifacts.Configuration; |
| 8 | +import org.gradle.api.artifacts.VersionCatalog; |
| 9 | +import org.gradle.api.artifacts.VersionCatalogsExtension; |
| 10 | +import org.gradle.api.artifacts.VersionConstraint; |
| 11 | +import org.gradle.api.file.RegularFile; |
8 | 12 | import org.gradle.api.logging.Logger;
|
9 | 13 | import org.gradle.api.plugins.JavaLibraryPlugin;
|
10 | 14 | import org.gradle.api.plugins.JavaPlugin;
|
| 15 | +import org.gradle.api.provider.Provider; |
11 | 16 | import org.gradle.api.tasks.SourceSet;
|
12 | 17 | import org.gradle.api.tasks.SourceSetContainer;
|
13 | 18 | import org.gradle.util.GradleVersion;
|
|
20 | 25 |
|
21 | 26 | @SuppressWarnings({"unused", "UnstableApiUsage"})
|
22 | 27 | @NonNullApi
|
23 |
| -public class JavaModuleDependenciesPlugin implements Plugin<Project> { |
| 28 | +public abstract class JavaModuleDependenciesPlugin implements Plugin<Project> { |
24 | 29 |
|
25 | 30 | private final Map<File, ModuleInfo> moduleInfo = new HashMap<>();
|
26 | 31 | private boolean catalogFound = true;
|
@@ -60,12 +65,13 @@ private void process(ModuleInfo.Directive moduleDirective, String gradleConfigur
|
60 | 65 |
|
61 | 66 | private void findAndReadModuleInfo(ModuleInfo.Directive moduleDirective, SourceSet sourceSet, Project project, Configuration configuration, JavaModuleDependenciesExtension javaModuleDependenciesExtension) {
|
62 | 67 | for (File folder : sourceSet.getJava().getSrcDirs()) {
|
63 |
| - File moduleInfoFile = new File(folder, "module-info.java"); |
64 |
| - if (moduleInfoFile.exists()) { |
65 |
| - if (!this.moduleInfo.containsKey(moduleInfoFile)) { |
66 |
| - this.moduleInfo.put(moduleInfoFile, new ModuleInfo(moduleInfoFile)); |
| 68 | + Provider<RegularFile> moduleInfoFile = project.getLayout().file(project.provider(() -> new File(folder, "module-info.java"))); |
| 69 | + Provider<String> moduleInfoContent = project.getProviders().fileContents(moduleInfoFile).getAsText().forUseAtConfigurationTime(); |
| 70 | + if (moduleInfoContent.isPresent()) { |
| 71 | + if (!this.moduleInfo.containsKey(folder)) { |
| 72 | + this.moduleInfo.put(folder, new ModuleInfo(moduleInfoContent.get())); |
67 | 73 | }
|
68 |
| - for (String moduleName : this.moduleInfo.get(moduleInfoFile).get(moduleDirective)) { |
| 74 | + for (String moduleName : this.moduleInfo.get(folder).get(moduleDirective)) { |
69 | 75 | declareDependency(moduleName, project, configuration, javaModuleDependenciesExtension);
|
70 | 76 | }
|
71 | 77 | }
|
|
0 commit comments