Skip to content

Commit a870abc

Browse files
authored
Property to disable tasks not needed for plugin's main functionality (#141)
This property is a "quick" solution to make this feature available and gather feedback from users. Eventually, tasks should be: - moved to a separate plugin - or removed completely if not considered useful anymore This would be a breaking change and thus should be done only in the next major release.
1 parent 22d15fc commit a870abc

File tree

6 files changed

+39
-28
lines changed

6 files changed

+39
-28
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Java Module Dependencies Gradle Plugin - Changelog
22

33
## Version 1.8
4+
* [#141](https://github.com/gradlex-org/java-module-dependencies/pull/141) Introduce `org.gradlex.java-module-dependencies.register-help-tasks` property
45
* [#127](https://github.com/gradlex-org/java-module-dependencies/issues/127) Less configuration cache misses when modifying `module-info.java` (Thanks [TheGoesen](https://github.com/TheGoesen))
56
* [#128](https://github.com/gradlex-org/java-module-dependencies/issues/128) Less configuration cache misses when using Settings plugin (Thanks [TheGoesen](https://github.com/TheGoesen))
67
* [#135](https://github.com/gradlex-org/java-module-dependencies/issues/135) Improve performance of ApplyPluginsAction

src/main/java/org/gradlex/javamodule/dependencies/JavaModuleDependenciesPlugin.java

+26-22
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
public abstract class JavaModuleDependenciesPlugin implements Plugin<ExtensionAware> {
6969

7070
private static final String EXTRA_JAVA_MODULE_INFO_PLUGIN_ID = "org.gradlex.extra-java-module-info";
71+
private static final String REGISTER_HELP_TASKS_PROPERTY = "org.gradlex.java-module-dependencies.register-help-tasks";
7172

7273
@Override
7374
public void apply(ExtensionAware projectOrSettings) {
@@ -92,6 +93,10 @@ private void applyProject(Project project) {
9293
}
9394

9495
private void setupForJavaProject(Project project, JavaModuleDependenciesExtension javaModuleDependencies) {
96+
boolean registerHelpTasks = Boolean.parseBoolean(project.getProviders()
97+
.gradleProperty(REGISTER_HELP_TASKS_PROPERTY)
98+
.getOrElse("true"));
99+
95100
SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class);
96101
sourceSets.all(sourceSet -> {
97102
process(REQUIRES, sourceSet.getImplementationConfigurationName(), sourceSet, project, javaModuleDependencies);
@@ -103,21 +108,22 @@ private void setupForJavaProject(Project project, JavaModuleDependenciesExtensio
103108
javaModuleDependencies.doAddRequiresRuntimeSupport(sourceSet, sourceSet);
104109
});
105110

106-
TaskProvider<Task> checkAllModuleInfo = project.getTasks().register("checkAllModuleInfo", t -> {
111+
setupDirectivesDSL(project, javaModuleDependencies);
112+
113+
TaskProvider<Task> checkAllModuleInfo = registerHelpTasks ? project.getTasks().register("checkAllModuleInfo", t -> {
107114
t.setGroup(VERIFICATION_GROUP);
108115
t.setDescription("Check scope and order of directives in 'module-info.java' files");
109-
});
116+
}) : null;
110117

111-
setupDirectivesDSL(project, javaModuleDependencies);
112-
113-
setupOrderingCheckTasks(project, checkAllModuleInfo, javaModuleDependencies);
114-
setupModuleDependenciesTask(project);
115-
setupReportTasks(project, javaModuleDependencies);
116-
setupMigrationTasks(project, javaModuleDependencies);
118+
if (registerHelpTasks) {
119+
setupOrderingCheckTasks(project, checkAllModuleInfo, javaModuleDependencies);
120+
setupModuleDependenciesTask(project);
121+
setupReportTasks(project, javaModuleDependencies);
122+
setupMigrationTasks(project, javaModuleDependencies);
123+
}
117124

118-
project.getPlugins().withId("com.autonomousapps.dependency-analysis", analysisPlugin -> {
119-
DependencyAnalysisBridge.registerDependencyAnalysisPostProcessingTask(project, checkAllModuleInfo);
120-
});
125+
project.getPlugins().withId("com.autonomousapps.dependency-analysis", analysisPlugin ->
126+
DependencyAnalysisBridge.registerDependencyAnalysisPostProcessingTask(project, checkAllModuleInfo));
121127
}
122128

123129
private void setupExtraJavaModulePluginBridge(Project project, JavaModuleDependenciesExtension javaModuleDependencies) {
@@ -143,17 +149,15 @@ private void setupDirectivesDSL(Project project, JavaModuleDependenciesExtension
143149
private void setupModuleDependenciesTask(Project project) {
144150
SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class);
145151
TaskProvider<ModuleDependencyReport> moduleDependencies = project.getTasks().register("moduleDependencies", ModuleDependencyReport.class, t -> t.setGroup(HELP_GROUP));
146-
sourceSets.all(sourceSet -> {
147-
moduleDependencies.configure(t -> {
148-
HashSet<Configuration> joined = new HashSet<>();
149-
if (t.getConfigurations() != null) {
150-
joined.addAll(t.getConfigurations());
151-
}
152-
joined.add(project.getConfigurations().getByName(sourceSet.getCompileClasspathConfigurationName()));
153-
joined.add(project.getConfigurations().getByName(sourceSet.getRuntimeClasspathConfigurationName()));
154-
t.setConfigurations(joined);
155-
});
156-
});
152+
sourceSets.all(sourceSet -> moduleDependencies.configure(t -> {
153+
HashSet<Configuration> joined = new HashSet<>();
154+
if (t.getConfigurations() != null) {
155+
joined.addAll(t.getConfigurations());
156+
}
157+
joined.add(project.getConfigurations().getByName(sourceSet.getCompileClasspathConfigurationName()));
158+
joined.add(project.getConfigurations().getByName(sourceSet.getRuntimeClasspathConfigurationName()));
159+
t.setConfigurations(joined);
160+
}));
157161
}
158162

159163
private void setupReportTasks(Project project, JavaModuleDependenciesExtension javaModuleDependencies) {

src/main/java/org/gradlex/javamodule/dependencies/internal/bridges/DependencyAnalysisBridge.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@
2626
import org.gradlex.javamodule.dependencies.tasks.ModuleDirectivesOrderingCheck;
2727
import org.gradlex.javamodule.dependencies.tasks.ModuleDirectivesScopeCheck;
2828

29+
import javax.annotation.Nullable;
2930
import java.io.File;
3031

3132
public class DependencyAnalysisBridge {
3233

33-
public static void registerDependencyAnalysisPostProcessingTask(Project project, TaskProvider<Task> checkAllModuleInfo) {
34+
public static void registerDependencyAnalysisPostProcessingTask(Project project, @Nullable TaskProvider<Task> checkAllModuleInfo) {
3435
TaskContainer tasks = project.getTasks();
3536
SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class);
3637

@@ -54,7 +55,9 @@ public static void registerDependencyAnalysisPostProcessingTask(Project project,
5455
project.getExtensions().getByType(AbstractExtension.class)
5556
.registerPostProcessingTask(checkModuleDirectivesScope);
5657

57-
checkAllModuleInfo.configure(t -> t.dependsOn(checkModuleDirectivesScope));
58+
if (checkAllModuleInfo != null) {
59+
checkAllModuleInfo.configure(t -> t.dependsOn(checkModuleDirectivesScope));
60+
}
5861
tasks.withType(ModuleDirectivesOrderingCheck.class).configureEach(t -> t.mustRunAfter(checkModuleDirectivesScope));
5962
}
6063
}

src/test/groovy/org/gradlex/javamodule/dependencies/test/BasicFunctionalityTest.groovy

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import spock.lang.Specification
66
class BasicFunctionalityTest extends Specification {
77

88
@Delegate
9-
GradleBuild build = new GradleBuild()
9+
GradleBuild build = new GradleBuild(true)
1010

1111
def "can configure all tasks in a build without error"() {
1212
given:

src/test/groovy/org/gradlex/javamodule/dependencies/test/OrderingCheckTest.groovy

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import spock.lang.Specification
66
class OrderingCheckTest extends Specification {
77

88
@Delegate
9-
GradleBuild build = new GradleBuild()
9+
GradleBuild build = new GradleBuild(true)
1010

1111
def "order is expected to be alphabetic for each scope individually"() {
1212
when:

src/test/groovy/org/gradlex/javamodule/dependencies/test/fixture/GradleBuild.groovy

+5-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import java.nio.file.Files
88

99
class GradleBuild {
1010

11+
final boolean withHelpTasks
1112
final File projectDir
1213
final File settingsFile
1314
final File appBuildFile
@@ -17,7 +18,8 @@ class GradleBuild {
1718

1819
final String gradleVersionUnderTest = System.getProperty("gradleVersionUnderTest")
1920

20-
GradleBuild(File projectDir = Files.createTempDirectory("gradle-build").toFile()) {
21+
GradleBuild(boolean withHelpTasks = false, File projectDir = Files.createTempDirectory("gradle-build").toFile()) {
22+
this.withHelpTasks = withHelpTasks
2123
this.projectDir = projectDir
2224
this.settingsFile = file("settings.gradle.kts")
2325
this.appBuildFile = file("app/build.gradle.kts")
@@ -98,7 +100,8 @@ class GradleBuild {
98100
.forwardOutput()
99101
.withPluginClasspath()
100102
.withProjectDir(projectDir)
101-
.withArguments(Arrays.asList(args) + latestFeaturesArgs + '-s' + '--warning-mode=all')
103+
.withArguments(Arrays.asList(args) + latestFeaturesArgs + '-s' + '--warning-mode=all'
104+
+ "-Porg.gradlex.java-module-dependencies.register-help-tasks=$withHelpTasks".toString())
102105
.withDebug(ManagementFactory.getRuntimeMXBean().getInputArguments().toString().contains("-agentlib:jdwp")).with {
103106
gradleVersionUnderTest ? it.withGradleVersion(gradleVersionUnderTest) : it
104107
}

0 commit comments

Comments
 (0)