You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2015/04/23 18:58:29 UTC

svn commit: r1675680 - in /uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven: RutaGenerateDescriptorMojo.java RutaGenerateMTWLMojo.java RutaGenerateTWLMojo.java Utils.java

Author: pkluegl
Date: Thu Apr 23 16:58:28 2015
New Revision: 1675680

URL: http://svn.apache.org/r1675680
Log:
UIMA-3650
- only build modified files

Modified:
    uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojo.java
    uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateMTWLMojo.java
    uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateTWLMojo.java
    uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/Utils.java

Modified: uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojo.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojo.java?rev=1675680&r1=1675679&r2=1675680&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojo.java (original)
+++ uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojo.java Thu Apr 23 16:58:28 2015
@@ -63,6 +63,7 @@ import org.apache.uima.ruta.extensions.I
 import org.apache.uima.util.InvalidXMLException;
 import org.apache.uima.util.XMLizable;
 import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.Scanner;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
 import org.codehaus.plexus.util.xml.Xpp3DomWriter;
@@ -230,17 +231,29 @@ public class RutaGenerateDescriptorMojo
     List<String> extensions = getExtensionsFromClasspath(classloader);
     options.setLanguageExtensions(extensions);
 
-    String[] files = FileUtils.getFilesFromExtension(project.getBuild().getOutputDirectory(),
+    String[] files = FileUtils.getFilesFromExtension(project.getBasedir().getAbsolutePath(),
             new String[] { "ruta" });
+    
+    List<File> filesToBuild = new ArrayList<File>();
+    for (String each : files) {
+      File file = new File(each);
+      if(buildContext.hasDelta(file)) {
+        filesToBuild.add(file);
+      }
+    }
+
+    if (filesToBuild.isEmpty()) {
+      getLog().debug("UIMA Ruta Building: Skipped, since no changes were detected.");
+      return;
+    }
 
     if (maxBuildRetries == -1) {
-      maxBuildRetries = files.length * 3;
+      maxBuildRetries = filesToBuild.size() * 3;
     }
 
     Queue<RutaDescriptorInformation> toBuild = new LinkedList<RutaDescriptorInformation>();
 
-    for (String fileString : files) {
-      File file = new File(fileString);
+    for (File file : filesToBuild) {
       try {
         RutaDescriptorInformation descriptorInformation = factory.parseDescriptorInformation(file,
                 options);
@@ -332,10 +345,11 @@ public class RutaGenerateDescriptorMojo
     OutputStream os = null;
     try {
       File out = new File(aFilename);
+      os = buildContext.newFileOutputStream(out);
       out.getParentFile().mkdirs();
       getLog().debug("Writing descriptor to: " + out);
-      os = new FileOutputStream(out);
       desc.toXML(os);
+      buildContext.refresh(out);
     } finally {
       IOUtils.closeQuietly(os);
     }
@@ -457,8 +471,8 @@ public class RutaGenerateDescriptorMojo
                         "org.eclipse.dltk.launching.INTERPRETER_CONTAINER")) {
           foundInterpreter = true;
         }
-        if(StringUtils.equals(buildpathentry.getAttribute("kind"), "var")&& StringUtils.equals(buildpathentry.getAttribute("path"),
-                RUTA_BUILD_VARS)) {
+        if (StringUtils.equals(buildpathentry.getAttribute("kind"), "var")
+                && StringUtils.equals(buildpathentry.getAttribute("path"), RUTA_BUILD_VARS)) {
           buildpathNode.removeChild(i);
         }
       }
@@ -474,9 +488,9 @@ public class RutaGenerateDescriptorMojo
           addBuildPathEntry(buildpathNode, type, path);
         }
       }
-      
+
       addRutabuildVars(buildpathNode);
-      
+
       // if (!foundInterpreter) {
       // Xpp3Dom buildpathentry = new Xpp3Dom("buildpathentry");
       // buildpathentry.setAttribute("kind", "con");
@@ -514,8 +528,7 @@ public class RutaGenerateDescriptorMojo
       buildpathNode.addChild(buildpathentry);
 
       addRutabuildVars(buildpathNode);
-      
-      
+
       StringWriter sw = new StringWriter();
       Xpp3DomWriter.write(sw, buildpathNode);
       String string = sw.toString();
@@ -546,8 +559,7 @@ public class RutaGenerateDescriptorMojo
     aeAttribute.setAttribute("value", analysisEngineSuffix);
     attributes.addChild(aeAttribute);
     buildpathNode.addChild(varEntry);
-    
-    
+
   }
 
   private void addBuildPathEntry(Xpp3Dom buildpathNode, String type, String path) {

Modified: uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateMTWLMojo.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateMTWLMojo.java?rev=1675680&r1=1675679&r2=1675680&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateMTWLMojo.java (original)
+++ uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateMTWLMojo.java Thu Apr 23 16:58:28 2015
@@ -79,7 +79,7 @@ public class RutaGenerateMTWLMojo extend
     }
     List<File> files = null;
     try {
-      files = Utils.getFiles(inputFiles);
+      files = Utils.getFilesIfModified(inputFiles, buildContext);
     } catch (IOException e) {
       getLog().warn("Error accessing input files.", e);
     }
@@ -94,6 +94,7 @@ public class RutaGenerateMTWLMojo extend
     if (trie != null) {
       try {
         trie.createMTWLFile(outputFile.getAbsolutePath(), compress, encoding);
+        buildContext.refresh(outputFile);
       } catch (IOException e) {
         getLog().warn("Error writing MTWL file.", e);
       }

Modified: uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateTWLMojo.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateTWLMojo.java?rev=1675680&r1=1675679&r2=1675680&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateTWLMojo.java (original)
+++ uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateTWLMojo.java Thu Apr 23 16:58:28 2015
@@ -79,7 +79,7 @@ public class RutaGenerateTWLMojo extends
 
     List<File> files = null;
     try {
-      files = Utils.getFiles(inputFiles);
+      files = Utils.getModifiedFiles(inputFiles, buildContext);
     } catch (IOException e) {
       getLog().warn("Error accessing input files.", e);
     }
@@ -96,6 +96,7 @@ public class RutaGenerateTWLMojo extends
         File outputFile = new File(outputDirectory, outputName);
         try {
           list.createTWLFile(outputFile.getAbsolutePath(), compress, "UTF-8");
+          buildContext.refresh(outputFile);
         } catch (IOException e) {
           getLog().warn("Error writing twl file.", e);
         }

Modified: uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/Utils.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/Utils.java?rev=1675680&r1=1675679&r2=1675680&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/Utils.java (original)
+++ uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/Utils.java Thu Apr 23 16:58:28 2015
@@ -21,19 +21,56 @@ package org.apache.uima.ruta.maven;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.apache.maven.model.FileSet;
 import org.codehaus.plexus.util.FileUtils;
+import org.sonatype.plexus.build.incremental.BuildContext;
 
 public class Utils {
 
-  @SuppressWarnings("unchecked")
-  public static List<File> getFiles(FileSet fileSet) throws IOException {
+  public static List<File> getModifiedFiles(FileSet fileSet, BuildContext buildContext) throws IOException {
+    List<File> result = new ArrayList<File>();
+
+    File directory = new File(fileSet.getDirectory());
+    String includes = toString(fileSet.getIncludes());
+    String excludes = toString(fileSet.getExcludes());
+
+    for (Object each : FileUtils.getFiles(directory, includes, excludes)) {
+      if (each instanceof File) {
+        File file = (File) each;
+        if (buildContext.hasDelta(file)) {
+          result.add(file);
+        }
+      }
+    }
+    return result;
+  }
+  
+  public static List<File> getFilesIfModified(FileSet fileSet, BuildContext buildContext) throws IOException {
+    List<File> result = new ArrayList<File>();
+
     File directory = new File(fileSet.getDirectory());
     String includes = toString(fileSet.getIncludes());
     String excludes = toString(fileSet.getExcludes());
-    return (List<File>) FileUtils.getFiles(directory, includes, excludes);
+
+    boolean modified = false;
+    for (Object each : FileUtils.getFiles(directory, includes, excludes)) {
+      if (each instanceof File) {
+        File file = (File) each;
+        result.add(file);
+        if (buildContext.hasDelta(file)) {
+          modified = true;
+        }
+      }
+    }
+    if(modified) {
+      return result;
+    } else {
+      return Collections.emptyList();
+    }
   }
 
   private static String toString(List<String> strings) {