From 1b1d8c186380f41fa23b070fae211984452355d8 Mon Sep 17 00:00:00 2001 From: Scott Kurz Date: Fri, 11 Aug 2023 15:54:01 -0400 Subject: [PATCH 1/3] Avoid unnecessary war:exploded calls for mere recompilation of Java classes Signed-off-by: Scott Kurz --- .../tools/common/plugins/util/DevUtil.java | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/main/java/io/openliberty/tools/common/plugins/util/DevUtil.java b/src/main/java/io/openliberty/tools/common/plugins/util/DevUtil.java index 150841a8..62214adc 100644 --- a/src/main/java/io/openliberty/tools/common/plugins/util/DevUtil.java +++ b/src/main/java/io/openliberty/tools/common/plugins/util/DevUtil.java @@ -358,7 +358,8 @@ private enum FileTrackMode { private File projectDirectory; private File multiModuleProjectDirectory; private List resourceDirs; - private List webResourceDirs; + // Not all webResource dirs need to be monitored, but those for which a Maven filtering will be applied do, since they can't be added to the loose app as source + private List monitoredWebResourceDirs; private boolean hotTests; private Path tempConfigPath; private boolean skipTests; @@ -443,7 +444,7 @@ public DevUtil(File buildDirectory, File serverDirectory, File sourceDirectory, boolean skipDefaultPorts, JavaCompilerOptions compilerOptions, boolean keepTempDockerfile, String mavenCacheLocation, List upstreamProjects, boolean recompileDependencies, String packagingType, File buildFile, Map> parentBuildFiles, boolean generateFeatures, - Set compileArtifactPaths, Set testArtifactPaths, List webResourceDirs) { + Set compileArtifactPaths, Set testArtifactPaths, List monitoredWebResourceDirs) { this.buildDirectory = buildDirectory; this.serverDirectory = serverDirectory; this.sourceDirectory = sourceDirectory; @@ -509,7 +510,7 @@ public DevUtil(File buildDirectory, File serverDirectory, File sourceDirectory, this.generateFeatures = generateFeatures; this.compileArtifactPaths = compileArtifactPaths; this.testArtifactPaths = testArtifactPaths; - this.webResourceDirs = webResourceDirs; + this.monitoredWebResourceDirs = monitoredWebResourceDirs; this.generatedFeaturesFile = new File(configDirectory, BinaryScannerUtil.GENERATED_FEATURES_FILE_PATH); this.generatedFeaturesModified = false; if (this.generateFeatures) { @@ -2835,7 +2836,7 @@ public void watchFiles(File outputDirectory, File testOutputDirectory, final Thr } HashMap webResourceMap = new HashMap(); - for (Path webResourceDir : webResourceDirs) { + for (Path webResourceDir : monitoredWebResourceDirs) { webResourceMap.put(webResourceDir, false); if (Files.exists(webResourceDir)) { registerAll(webResourceDir, executor); @@ -3033,7 +3034,7 @@ public void watchFiles(File outputDirectory, File testOutputDirectory, final Thr } // Check if webResourceDirectory has been added or deleted - for (Path webResourceDir : webResourceDirs) { + for (Path webResourceDir : monitoredWebResourceDirs) { if (!webResourceMap.get(webResourceDir) && Files.exists(webResourceDir)) { updateLooseApp(); registerAll(webResourceDir, executor); @@ -3906,7 +3907,7 @@ private void processFileChanges( // webResource file check Path webResourceParent = null; - for (Path webResourceDir : webResourceDirs) { + for (Path webResourceDir : monitoredWebResourceDirs) { if (directory.startsWith(webResourceDir)) { webResourceParent = webResourceDir; break; @@ -4082,9 +4083,6 @@ private void processFileChanges( } } } - // Update the loose app in case something changed - updateLooseApp(); - } else if (upstreamResourceParent != null && directory.startsWith(upstreamResourceParent.getCanonicalFile().toPath())) { // resources debug("Resource dir: " + upstreamResourceParent.toString()); @@ -4233,8 +4231,6 @@ private void processFileChanges( triggerJavaTestRecompile = true; } } - // Update the loose app in case something changed - updateLooseApp(); runTestThread(true, executor, numApplicationUpdatedMessages, skipUTs, false, buildFile); } } else if (fileChanged.equals(dockerfileUsed) @@ -4998,8 +4994,6 @@ protected boolean recompileJava(Collection javaFilesChanged, Set a // redeploy app after compilation if not loose application if (!isLooseApplication()) { redeployApp(); - } else { - updateLooseApp(); } if (projectName != null) { info(projectName + " source compilation was successful."); From 1c94c9247671af47751a79f4725c70babe8fe082 Mon Sep 17 00:00:00 2001 From: Scott Kurz Date: Mon, 14 Aug 2023 10:01:11 -0400 Subject: [PATCH 2/3] Expose monitored dirs field for LMP/LGP Signed-off-by: Scott Kurz --- .../io/openliberty/tools/common/plugins/util/DevUtil.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/openliberty/tools/common/plugins/util/DevUtil.java b/src/main/java/io/openliberty/tools/common/plugins/util/DevUtil.java index 62214adc..0e7ad79c 100644 --- a/src/main/java/io/openliberty/tools/common/plugins/util/DevUtil.java +++ b/src/main/java/io/openliberty/tools/common/plugins/util/DevUtil.java @@ -357,9 +357,9 @@ private enum FileTrackMode { private File configDirectory; private File projectDirectory; private File multiModuleProjectDirectory; - private List resourceDirs; + protected List resourceDirs; // Not all webResource dirs need to be monitored, but those for which a Maven filtering will be applied do, since they can't be added to the loose app as source - private List monitoredWebResourceDirs; + protected List monitoredWebResourceDirs; private boolean hotTests; private Path tempConfigPath; private boolean skipTests; From 1a4e80c9240ea6889691656153256ba897701a68 Mon Sep 17 00:00:00 2001 From: Scott Kurz Date: Mon, 14 Aug 2023 17:36:03 -0400 Subject: [PATCH 3/3] Canonicalize path for comparisons Signed-off-by: Scott Kurz --- .../java/io/openliberty/tools/common/plugins/util/DevUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/openliberty/tools/common/plugins/util/DevUtil.java b/src/main/java/io/openliberty/tools/common/plugins/util/DevUtil.java index 0e7ad79c..82ac7411 100644 --- a/src/main/java/io/openliberty/tools/common/plugins/util/DevUtil.java +++ b/src/main/java/io/openliberty/tools/common/plugins/util/DevUtil.java @@ -3894,7 +3894,7 @@ private void processFileChanges( Path configPath = this.configDirectory.getCanonicalFile().toPath(); Path outputPath = this.outputDirectory.getCanonicalFile().toPath(); - Path directory = fileChanged.getParentFile().toPath(); + Path directory = fileChanged.getParentFile().getCanonicalFile().toPath(); // resource file check File resourceParent = null;