Skip to content

Commit 4cf793b

Browse files
[#502] : delete episodeFile if only file generated in configuration phase of m2e (tested in eclipse)
1 parent 4dc98bd commit 4cf793b

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

maven-plugin/plugin-core/src/main/java/org/jvnet/jaxb/maven/RawXJC2Mojo.java

+30
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
import org.apache.maven.project.artifact.InvalidDependencyVersionException;
6161
import org.apache.maven.settings.Proxy;
6262
import org.apache.maven.settings.Settings;
63+
import org.codehaus.plexus.util.DirectoryScanner;
6364
import org.codehaus.plexus.util.FileUtils;
6465
import org.codehaus.plexus.util.IOUtil;
6566
import org.jvnet.jaxb.maven.net.CompositeURILastModifiedResolver;
@@ -75,6 +76,7 @@
7576
import org.jvnet.jaxb.maven.util.LocaleUtils;
7677
import org.jvnet.jaxb.maven.util.CollectionUtils.Function;
7778
import org.sonatype.plexus.build.incremental.BuildContext;
79+
import org.sonatype.plexus.build.incremental.EmptyScanner;
7880
import org.xml.sax.EntityResolver;
7981
import org.xml.sax.InputSource;
8082
import org.xml.sax.SAXException;
@@ -479,6 +481,7 @@ protected void doExecute() throws MojoExecutionException {
479481
setupDirectories();
480482
doExecute(options);
481483
addIfExistsToEpisodeSchemaBindings();
484+
deleteEpisodeIfOnlyFileOnEmptyContext();
482485
final BuildContext buildContext = getBuildContext();
483486
getLog().debug(MessageFormat.format("Refreshing the generated directory [{0}].",
484487
getGenerateDirectory().getAbsolutePath()));
@@ -577,6 +580,33 @@ private void addIfExistsToEpisodeSchemaBindings() throws MojoExecutionException
577580
}
578581
}
579582

583+
private void deleteEpisodeIfOnlyFileOnEmptyContext() {
584+
if (!getEpisode() || getBuildContext() == null) {
585+
return;
586+
}
587+
final File episodeFile = getEpisodeFile();
588+
if (getBuildContext().isIncremental() && getBuildContext().newScanner(getGenerateDirectory()) instanceof EmptyScanner) {
589+
if (!episodeFile.canWrite()) {
590+
getLog().warn(MessageFormat
591+
.format("Episode file [{0}] is not writable, could not delete on incremental empty build.", episodeFile));
592+
return;
593+
}
594+
DirectoryScanner directoryScanner = new DirectoryScanner();
595+
directoryScanner.setBasedir(getGenerateDirectory());
596+
directoryScanner.setIncludes(getProduces());
597+
directoryScanner.scan();
598+
599+
if (directoryScanner.getIncludedFiles() != null && directoryScanner.getIncludedFiles().length == 1) {
600+
String fileFound = directoryScanner.getIncludedFiles()[0];
601+
if (new File(directoryScanner.getBasedir(), fileFound).equals(episodeFile)) {
602+
getLog().info(MessageFormat
603+
.format("directoryScanner got only one file [{0}] which is episodeFile - deleting since running in m2e context.", fileFound, episodeFile));
604+
episodeFile.delete();
605+
}
606+
}
607+
}
608+
}
609+
580610
private URILastModifiedResolver uriLastModifiedResolver;
581611

582612
private void setupURILastModifiedResolver() {

0 commit comments

Comments
 (0)