Skip to content

Commit 79a1d16

Browse files
committed
Track when generate-features file is copied early to prevent copying twice
Signed-off-by: Paul Gooderham <turkeyonmarblerye@gmail.com>
1 parent 7b2bf2f commit 79a1d16

File tree

1 file changed

+24
-7
lines changed
  • src/main/java/io/openliberty/tools/common/plugins/util

1 file changed

+24
-7
lines changed

src/main/java/io/openliberty/tools/common/plugins/util/DevUtil.java

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,7 @@ private enum FileTrackMode {
438438
private boolean generateToSrc;
439439
private Set<String> generatedFeaturesSet; // set of features in generated-features.xml file
440440
private boolean generatedFeaturesModified;
441+
private boolean generatedFeaturesCopied;
441442
private Set<String> compileArtifactPaths;
442443
private Set<String> testArtifactPaths;
443444
protected File generateFeaturesFile; // the file that is created from the generate-features goal/task
@@ -565,6 +566,7 @@ public DevUtil(File buildDirectory, File serverDirectory, File sourceDirectory,
565566
this.testArtifactPaths = testArtifactPaths;
566567
this.monitoredWebResourceDirs = monitoredWebResourceDirs;
567568
this.generatedFeaturesModified = false;
569+
this.generatedFeaturesCopied = false;
568570
if (this.generateFeatures) {
569571
this.generatedFeaturesSet = getGeneratedFeatures();
570572
} else {
@@ -580,6 +582,9 @@ private void initGenerationContext() {
580582

581583
public void copyGeneratedFeaturesFile(File destinationDir) throws IOException {
582584
copyFile(generateFeaturesFile, generateFeaturesOutputDir, destinationDir, null);
585+
if (destinationDir.equals(serverDirectory)) {
586+
generatedFeaturesCopied = true; // features copied into server dir and not some temp dir
587+
}
583588
}
584589
/**
585590
* Run unit and/or integration tests
@@ -4673,14 +4678,26 @@ private void processConfigFileChange(File fileChanged, ChangeType changeType, Th
46734678
System.setProperty(SKIP_BETA_INSTALL_WARNING, Boolean.TRUE.toString());
46744679
installFeaturesToTempDir(fileChanged, fileChangedParentDir, targetFileName, generateFeaturesSuccess);
46754680
}
4676-
copyFile(fileChanged, fileChangedParentDir, serverDirectory, targetFileName);
4677-
4678-
// if the generated features file was modified as a result of another config
4679-
// file modification, copy it over to target so the server picks up the changes
4680-
// together
4681+
// Copy the config file which was changed to the server directory unless it is
4682+
// the generated features file. The generated features file may have been copied
4683+
// to the server directory already as a result of a change to the build file (pom.xml)
4684+
// or the server.xml.
4685+
if (!isGeneratedFeaturesFile) { // all other config files
4686+
copyFile(fileChanged, fileChangedParentDir, serverDirectory, targetFileName);
4687+
} else {
4688+
if (!generatedFeaturesCopied) {
4689+
copyGeneratedFeaturesFile(serverDirectory);
4690+
}
4691+
generatedFeaturesCopied = false;
4692+
}
4693+
// If the generated features file was modified as a result of another config file modification
4694+
// (usually server.xml), copy it over to target so the server picks up the two changes together
46814695
if (generateFeaturesSuccess && generatedFeaturesModified && !isGeneratedFeaturesFile) {
4682-
// this logic is not entered if the fileChanged is the generated features file
4683-
// copy generated features file to server dir
4696+
// This logic is not entered if the fileChanged is the generated features file.
4697+
// Copy generated features file to server dir and set generatedFeaturesCopied true
4698+
// (not referring to generatedFeaturesModified).
4699+
// Leave generatedFeaturesCopied true because the call to optimize/incrementalGenerateFeatures that was
4700+
// required to get into this IF block will also generate a file change event for generatedFeaturesFile
46844701
copyGeneratedFeaturesFile(serverDirectory);
46854702
generatedFeaturesModified = false;
46864703
}

0 commit comments

Comments
 (0)