Skip to main content

[maven-incremental-build~svn:139] No build if target dir already exists and ensure the target dir is preven

  • From: vsellier@...
  • To: commits@...
  • Subject: [maven-incremental-build~svn:139] No build if target dir already exists and ensure the target dir is preven
  • Date: Sun, 11 Mar 2012 23:11:39 +0000

Project:    maven-incremental-build
Repository: svn
Revision:   139
Author:     vsellier
Date:       2012-03-11 23:11:37 UTC
Link:       

Log Message:
------------
No build if target dir already exists and ensure the target dir is prevent 
before scanning it


Revisions:
----------
139


Modified Paths:
---------------
trunk/src/test/java/net/java/mavenincrementalbuild/IncrementalBuildMojoTest.java
trunk/src/main/java/net/java/mavenincrementalbuild/IncrementalBuildMojo.java


Diffs:
------
Index: 
trunk/src/test/java/net/java/mavenincrementalbuild/IncrementalBuildMojoTest.java
===================================================================
--- 
trunk/src/test/java/net/java/mavenincrementalbuild/IncrementalBuildMojoTest.java
    (revision 138)
+++ 
trunk/src/test/java/net/java/mavenincrementalbuild/IncrementalBuildMojoTest.java
    (revision 139)
@@ -110,6 +110,26 @@
     }
 
     @Test
+    public void testNoTestDirectoryNoModification() throws IOException {
+        FileUtils.deleteDirectory(testsDir);
+        FileUtils.deleteQuietly(new File(TARGET_TEST_OUTPUT + 
File.separatorChar + IncrementalBuildMojo.TEST_LIST_FILE));
+        assertFalse("No modification must be detected if no test directory 
exists", mojo.testsUpdated());
+    }
+
+    @Test
+    public void testNoTestResourcesDirectoryNoModification() throws 
IOException {
+        FileUtils.deleteDirectory(testResourcesDir);
+        FileUtils.deleteQuietly(new File(TARGET_TEST_OUTPUT + 
File.separatorChar + IncrementalBuildMojo.TEST_RESOURCES_LIST_FILE));
+        assertFalse("No modification must be detected if no test resources 
directory exists", mojo.testsUpdated());
+    }
+
+    @Test
+    public void testNoResourcesDirectoryNoModification() throws IOException {
+        FileUtils.deleteDirectory(resourcesDir);
+        assertFalse("No modification must be detected if no resources 
directory exists", mojo.testsUpdated());
+    }
+
+    @Test
     public void testOutputResourceDeletedDetected() throws IOException {
         outputResourceFile2.delete();
         assertTrue("Deleted output file not detected", 
mojo.resourcesUpdated());
Index: 
trunk/src/main/java/net/java/mavenincrementalbuild/IncrementalBuildMojo.java
===================================================================
--- 
trunk/src/main/java/net/java/mavenincrementalbuild/IncrementalBuildMojo.java  
      (revision 138)
+++ 
trunk/src/main/java/net/java/mavenincrementalbuild/IncrementalBuildMojo.java  
      (revision 139)
@@ -65,9 +65,9 @@
 public class IncrementalBuildMojo extends AbstractMojo {
     private final static String TIMESTAMPS_FILE = "timestamp";
     private static final String RESOURCES_LIST_FILE = "resourcesList";
-    private static final String TEST_RESOURCES_LIST_FILE = 
"testResourcesList";
+    protected static final String TEST_RESOURCES_LIST_FILE = 
"testResourcesList";
     private static final String SOURCE_LIST_FILE = "sourcesList";
-    private static final String TEST_LIST_FILE = "testsList";
+    protected static final String TEST_LIST_FILE = "testsList";
 
     /**
      * The Maven project.
@@ -219,8 +219,8 @@
         }
 
         if (!targetDirectory.exists()) {
-            getLog().info("No target directory, build is required.");
-            updateDetected = true;
+            getLog().info("No target directory " + targetDirectoryPath + ", 
project already cleaned.");
+            updateDetected = false;
         }
 
         DirectoryScanner scanner = new DirectoryScanner();
@@ -246,44 +246,48 @@
             previousSources.remove(files[i]);
         }
         getLog().debug("Last source modification : " + 
lastSourceModificationDate);
+        // Not all previous file was found into the source directory
+        // Assume some files was deleted into the source directory
+        if (! previousSources.isEmpty()) {
+            getLog().info("At least one source file was deleted, module have 
to be cleaned");
+            updateDetected = true;
+        }
 
+        // Scanning target directory to compare last build date
         String targetDir = project.getBuild().getOutputDirectory();
         getLog().debug("Target directory : " + targetDir);
+        if (! new File(targetDir).exists()) {
+            getLog().debug("Target dir does not exist, project is already 
clear");
+        } else {
+            scanner = new DirectoryScanner();
+            scanner.setBasedir(targetDir);
+            scanner.setIncludes(new String[]{"**/*"});
+            scanner.addDefaultExcludes();
 
-        scanner = new DirectoryScanner();
-        scanner.setBasedir(project.getBuild().getOutputDirectory());
-        scanner.setIncludes(new String[]{"**/*"});
-        scanner.addDefaultExcludes();
+            getLog().debug("Scanning output directory...");
+            scanner.scan();
+            files = scanner.getIncludedFiles();
+            getLog().debug("Target files : " + Arrays.toString(files));
 
-        getLog().debug("Scanning output directory...");
-        scanner.scan();
-        files = scanner.getIncludedFiles();
-        getLog().debug("Target files : " + Arrays.toString(files));
+            // TODO put this in a method
+            for (int i = 0; i < files.length; i++) {
+                File file = new File(targetDir, files[i]);
+                Long lastModification = file.lastModified();
+                if (lastModification > lastTargetModificationDate) {
+                    lastTargetModificationDate = lastModification;
+                }
+            }
+            getLog().debug("Last target modification date : " + 
lastTargetModificationDate);
 
-        // TODO put this in a method
-        for (int i = 0; i < files.length; i++) {
-            File file = new File(targetDir, files[i]);
-            Long lastModification = file.lastModified();
-            if (lastModification > lastTargetModificationDate) {
-                lastTargetModificationDate = lastModification;
+            if (lastSourceModificationDate > lastTargetModificationDate) {
+                getLog().info("Source modification detected, clean will be 
called");
+                updateDetected = true;
+            } else {
+                getLog().debug("No timestamp changes detected.");
+                updateDetected |= false;
             }
         }
-        getLog().debug("Last target modification date : " + 
lastTargetModificationDate);
 
-        if (lastSourceModificationDate > lastTargetModificationDate) {
-            getLog().info("Source modification detected, clean will be 
called");
-            updateDetected = true;
-        } else {
-            getLog().debug("No timestamp changes detected.");
-            updateDetected |= false;
-        }
-
-        // Not all previous file was found into the source directory
-        // Assume some files was deleted into the source directory
-        if (! previousSources.isEmpty()) {
-            getLog().info("At least one source file was deleted, module have 
to be cleaned");
-            updateDetected = true;
-        }
         getLog().debug("Saving source list");
         try {
             actualSources.save();
@@ -375,7 +379,7 @@
             getLog().debug("Resources includes : " + includes);
 
             if (!new File(source).exists()) {
-                getLog().info("Resources directory does not exist : " + 
source);
+                getLog().info("Resources directory does not exist " + source 
+ ". Skipped...");
                 continue;
             }
 





[maven-incremental-build~svn:139] No build if target dir already exists and ensure the target dir is preven

vsellier 03/11/2012
 
 
Close
loading
Please Confirm
Close