Author: pkluegl
Date: Mon Jun 6 15:35:32 2016
New Revision: 1747030
URL: http://svn.apache.org/viewvc?rev=1747030&view=rev
Log:
UIMA-4619
- do not rely on buildContext.hasDelta()
- use lastModified instead
- optimized descriptor build
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/test/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojoTest.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=1747030&r1=1747029&r2=1747030&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
Mon Jun 6 15:35:32 2016
@@ -40,6 +40,7 @@ import org.apache.commons.lang3.StringUt
import org.apache.commons.lang3.tuple.Pair;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.FileSet;
import org.apache.maven.model.Resource;
import org.apache.maven.plugin.AbstractMojo;
@@ -86,12 +87,15 @@ public class RutaGenerateDescriptorMojo
private static final String RUTA_NATURE = "org.apache.uima.ruta.ide.nature";
- @Component
+ @Parameter( defaultValue = "${project}", readonly = true )
private MavenProject project;
@Component
private BuildContext buildContext;
+ @Parameter( defaultValue = "${session}", readonly = true )
+ private MavenSession session;
+
/**
* The source files for the multi tree word list.
*/
@@ -209,35 +213,7 @@ public class RutaGenerateDescriptorMojo
this.project.addCompileSourceRoot(this.typeSystemOutputDirectory.getPath());
this.project.addCompileSourceRoot(this.analysisEngineOutputDirectory.getPath());
- RutaDescriptorFactory factory = new RutaDescriptorFactory();
- if (typeSystemTemplate != null) {
- try {
- factory.setDefaultTypeSystem(typeSystemTemplate.toURI().toURL());
- } catch (MalformedURLException e) {
- getLog().warn("Failed to get URL of " + typeSystemTemplate, e);
- }
- }
- if (analysisEngineTemplate != null) {
- try {
- factory.setDefaultEngine(analysisEngineTemplate.toURI().toURL());
- } catch (MalformedURLException e) {
- getLog().warn("Failed to get URL of " + analysisEngineTemplate, e);
- }
- }
-
- URLClassLoader classloader = getClassloader(project, getLog());
-
- RutaBuildOptions options = new RutaBuildOptions();
- options.setTypeSystemSuffix(typeSystemSuffix);
- options.setAnalysisEngineSuffix(analysisEngineSuffix);
- options.setEncoding(encoding);
- options.setResolveImports(resolveImports);
- options.setImportByName(importByName);
- options.setClassLoader(classloader);
-
- List<String> extensions = getExtensionsFromClasspath(classloader);
- options.setLanguageExtensions(extensions);
-
+
String[] files = null;
if (scriptFiles != null) {
try {
@@ -263,10 +239,21 @@ public class RutaGenerateDescriptorMojo
List<File> filesToBuild = new ArrayList<File>();
for (String each : files) {
File file = new File(each);
- boolean descriptorMissing = isDescriptorMissing(file);
- boolean hasDelta = buildContext.hasDelta(file);
- if (descriptorMissing || hasDelta) {
+
+ // TODO should check the correct package!
+ List<File> possibleDescriptors = getPossibleDescriptors(file);
+ if(possibleDescriptors == null) {
filesToBuild.add(file);
+ continue;
+ }
+
+ long scriptModified = file.lastModified();
+ for (File eachDescriptor : possibleDescriptors) {
+ long descModified = eachDescriptor.lastModified();
+ if(scriptModified > descModified) {
+ filesToBuild.add(file);
+ break;
+ }
}
}
@@ -275,6 +262,38 @@ public class RutaGenerateDescriptorMojo
return;
}
+
+
+ RutaDescriptorFactory factory = new RutaDescriptorFactory();
+ if (typeSystemTemplate != null) {
+ try {
+ factory.setDefaultTypeSystem(typeSystemTemplate.toURI().toURL());
+ } catch (MalformedURLException e) {
+ getLog().warn("Failed to get URL of " + typeSystemTemplate, e);
+ }
+ }
+ if (analysisEngineTemplate != null) {
+ try {
+ factory.setDefaultEngine(analysisEngineTemplate.toURI().toURL());
+ } catch (MalformedURLException e) {
+ getLog().warn("Failed to get URL of " + analysisEngineTemplate, e);
+ }
+ }
+
+ URLClassLoader classloader = getClassloader(project, getLog());
+
+ RutaBuildOptions options = new RutaBuildOptions();
+ options.setTypeSystemSuffix(typeSystemSuffix);
+ options.setAnalysisEngineSuffix(analysisEngineSuffix);
+ options.setEncoding(encoding);
+ options.setResolveImports(resolveImports);
+ options.setImportByName(importByName);
+ options.setClassLoader(classloader);
+
+ List<String> extensions = getExtensionsFromClasspath(classloader);
+ options.setLanguageExtensions(extensions);
+
+
if (maxBuildRetries == -1) {
maxBuildRetries = filesToBuild.size() * 3;
}
@@ -325,34 +344,39 @@ public class RutaGenerateDescriptorMojo
}
- private boolean isDescriptorMissing(File file) {
+ @SuppressWarnings("unchecked")
+ private List<File> getPossibleDescriptors(File file) {
+ List<File> result = new ArrayList<>();
String scriptName = file.getName().substring(0, file.getName().length() -
5);
- String aeName = scriptName + analysisEngineSuffix + ".xml";
- List<?> aeFiles = null;
+ String aeName = "**/" + scriptName + analysisEngineSuffix + ".xml";
+ List<File> aeFiles = null;
try {
aeFiles = FileUtils.getFiles(analysisEngineOutputDirectory, aeName,
null);
+ result.addAll(aeFiles);
} catch (IOException e) {
- return true;
+ return null;
}
if (aeFiles == null || aeFiles.size() == 0) {
- return true;
+ return null;
}
- String tsName = scriptName + typeSystemSuffix + ".xml";
- List<?> tsFiles;
+ String tsName = "**/" + scriptName + typeSystemSuffix + ".xml";
+ List<File> tsFiles;
try {
tsFiles = FileUtils.getFiles(typeSystemOutputDirectory, tsName, null);
+ result.addAll(tsFiles);
} catch (IOException e) {
- return true;
+ return null;
}
if (tsFiles == null || tsFiles.size() == 0) {
- return true;
+ return null;
}
- return false;
+ return result;
}
+
private List<String> getExtensionsFromClasspath(ClassLoader classloader) {
List<String> result = new ArrayList<String>();
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=1747030&r1=1747029&r2=1747030&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
Mon Jun 6 15:35:32 2016
@@ -44,7 +44,8 @@ import org.sonatype.plexus.build.increme
*/
@Mojo(name = "mtwl", defaultPhase = LifecyclePhase.GENERATE_RESOURCES,
requiresDependencyResolution = ResolutionScope.COMPILE)
public class RutaGenerateMTWLMojo extends AbstractMojo {
- @Component
+
+ @Parameter( defaultValue = "${project}", readonly = true )
private MavenProject project;
@Component
@@ -119,6 +120,7 @@ public class RutaGenerateMTWLMojo extend
List<File> result = new ArrayList<File>();
boolean exists = outputFile.exists();
+ long outputModified = outputFile.lastModified();
File directory = new File(fileSet.getDirectory());
String includes = Utils.toString(fileSet.getIncludes());
@@ -128,10 +130,11 @@ public class RutaGenerateMTWLMojo extend
for (Object each : FileUtils.getFiles(directory, includes, excludes)) {
if (each instanceof File) {
File file = (File) each;
- result.add(file);
- if (buildContext.hasDelta(file)) {
+ long inputModified = file.lastModified();
+ if(inputModified > outputModified) {
modified = true;
}
+ result.add(file);
}
}
if(!exists || modified) {
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=1747030&r1=1747029&r2=1747030&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
Mon Jun 6 15:35:32 2016
@@ -46,7 +46,8 @@ import org.sonatype.plexus.build.increme
*/
@Mojo(name = "twl", defaultPhase = LifecyclePhase.GENERATE_RESOURCES,
requiresDependencyResolution = ResolutionScope.COMPILE)
public class RutaGenerateTWLMojo extends AbstractMojo {
- @Component
+
+ @Parameter( defaultValue = "${project}", readonly = true )
private MavenProject project;
@Component
@@ -131,9 +132,9 @@ public class RutaGenerateTWLMojo extends
for (Object each : FileUtils.getFiles(directory, includes, excludes)) {
if (each instanceof File) {
File inputFile = (File) each;
- File outputfile = getOutputFile(inputFile, directory, outputDirectory);
- if (outputfile == null || !outputfile.exists() ||
buildContext.hasDelta(inputFile)) {
- result.put(inputFile, outputfile);
+ File outputFile = getOutputFile(inputFile, directory, outputDirectory);
+ if (outputFile == null || !outputFile.exists() ||
inputFile.lastModified() > outputFile.lastModified()) {
+ result.put(inputFile, outputFile);
}
}
}
Modified:
uima/ruta/trunk/ruta-maven-plugin/src/test/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojoTest.java
URL:
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-maven-plugin/src/test/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojoTest.java?rev=1747030&r1=1747029&r2=1747030&view=diff
==============================================================================
---
uima/ruta/trunk/ruta-maven-plugin/src/test/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojoTest.java
(original)
+++
uima/ruta/trunk/ruta-maven-plugin/src/test/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojoTest.java
Mon Jun 6 15:35:32 2016
@@ -35,9 +35,7 @@ import org.apache.uima.cas.text.Annotati
import org.apache.uima.cas.text.AnnotationIndex;
import org.apache.uima.util.XMLInputSource;
import org.codehaus.plexus.util.FileUtils;
-
-import junit.framework.Assert;
-
+import org.junit.Assert;
public class RutaGenerateDescriptorMojoTest extends AbstractMojoTestCase {