You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/12/13 01:42:29 UTC

svn commit: r603783 - in /incubator/tuscany/java/sca/tools/maven/maven-incremental-build: ./ src/main/java/org/apache/tuscany/sca/tools/incremental/build/plugin/

Author: rfeng
Date: Wed Dec 12 16:42:25 2007
New Revision: 603783

URL: http://svn.apache.org/viewvc?rev=603783&view=rev
Log:
Use timestamp to detect the changes

Added:
    incubator/tuscany/java/sca/tools/maven/maven-incremental-build/src/main/java/org/apache/tuscany/sca/tools/incremental/build/plugin/AbstractBuildMojo.java   (with props)
Removed:
    incubator/tuscany/java/sca/tools/maven/maven-incremental-build/src/main/java/org/apache/tuscany/sca/tools/incremental/build/plugin/AbstractScmMojo.java
Modified:
    incubator/tuscany/java/sca/tools/maven/maven-incremental-build/pom.xml
    incubator/tuscany/java/sca/tools/maven/maven-incremental-build/src/main/java/org/apache/tuscany/sca/tools/incremental/build/plugin/IncrementalBuildMojo.java

Modified: incubator/tuscany/java/sca/tools/maven/maven-incremental-build/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/tools/maven/maven-incremental-build/pom.xml?rev=603783&r1=603782&r2=603783&view=diff
==============================================================================
--- incubator/tuscany/java/sca/tools/maven/maven-incremental-build/pom.xml (original)
+++ incubator/tuscany/java/sca/tools/maven/maven-incremental-build/pom.xml Wed Dec 12 16:42:25 2007
@@ -73,22 +73,22 @@
         </dependency>
 
         <dependency>
-            <groupId>org.apache.maven.scm</groupId>
-            <artifactId>maven-scm-manager-plexus</artifactId>
-            <version>1.0</version>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-compiler-api</artifactId>
+            <version>1.5.3</version>
         </dependency>
+
         <dependency>
-            <groupId>org.apache.maven.scm</groupId>
-            <artifactId>maven-scm-provider-svnexe</artifactId>
-            <version>1.0</version>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-compiler-manager</artifactId>
+            <version>1.5.3</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.maven.scm</groupId>
-            <artifactId>maven-scm-provider-local</artifactId>
-            <version>1.0</version>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-compiler-javac</artifactId>
+            <version>1.5.3</version>
+            <scope>runtime</scope>
         </dependency>
-
-
 
     </dependencies>
 </project>

Added: incubator/tuscany/java/sca/tools/maven/maven-incremental-build/src/main/java/org/apache/tuscany/sca/tools/incremental/build/plugin/AbstractBuildMojo.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/tools/maven/maven-incremental-build/src/main/java/org/apache/tuscany/sca/tools/incremental/build/plugin/AbstractBuildMojo.java?rev=603783&view=auto
==============================================================================
--- incubator/tuscany/java/sca/tools/maven/maven-incremental-build/src/main/java/org/apache/tuscany/sca/tools/incremental/build/plugin/AbstractBuildMojo.java (added)
+++ incubator/tuscany/java/sca/tools/maven/maven-incremental-build/src/main/java/org/apache/tuscany/sca/tools/incremental/build/plugin/AbstractBuildMojo.java Wed Dec 12 16:42:25 2007
@@ -0,0 +1,436 @@
+package org.apache.tuscany.sca.tools.incremental.build.plugin;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.model.Resource;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.compiler.Compiler;
+import org.codehaus.plexus.compiler.CompilerConfiguration;
+import org.codehaus.plexus.compiler.CompilerException;
+import org.codehaus.plexus.compiler.CompilerOutputStyle;
+import org.codehaus.plexus.compiler.manager.CompilerManager;
+import org.codehaus.plexus.compiler.manager.NoSuchCompilerException;
+import org.codehaus.plexus.compiler.util.scan.InclusionScanException;
+import org.codehaus.plexus.compiler.util.scan.SimpleSourceInclusionScanner;
+import org.codehaus.plexus.compiler.util.scan.SourceInclusionScanner;
+import org.codehaus.plexus.compiler.util.scan.StaleSourceScanner;
+import org.codehaus.plexus.compiler.util.scan.mapping.SingleTargetSourceMapping;
+import org.codehaus.plexus.compiler.util.scan.mapping.SourceMapping;
+import org.codehaus.plexus.compiler.util.scan.mapping.SuffixMapping;
+import org.codehaus.plexus.util.DirectoryScanner;
+
+/**
+ * @version $Id: StaleSourceScannerTest.java 2393 2005-08-08 22:32:59Z kenney $
+ */
+public abstract class AbstractBuildMojo extends AbstractMojo {
+    // ----------------------------------------------------------------------
+    // Configurables
+    // ----------------------------------------------------------------------
+
+    /**
+     * The -source argument for the Java compiler.
+     *
+     * @parameter expression="${maven.compiler.source}"
+     * @readonly
+     */
+    private String source;
+
+    /**
+     * The -target argument for the Java compiler.
+     *
+     * @parameter expression="${maven.compiler.target}"
+     * @readonly
+     */
+    private String target;
+
+    /**
+     * The -encoding argument for the Java compiler.
+     *
+     * @parameter expression="${maven.compiler.encoding}"
+     * @readonly
+     */
+    private String encoding;
+
+    /**
+     * Sets the granularity in milliseconds of the last modification
+     * date for testing whether a source needs recompilation.
+     *
+     * @parameter expression="${lastModGranularityMs}" default-value="0"
+     * 
+     */
+    private int staleMillis;
+
+    /**
+     * The compiler id of the compiler to use. See this
+     * <a href="non-javac-compilers.html">guide</a> for more information.
+     *
+     * @parameter expression="${maven.compiler.compilerId}" default-value="javac"
+     * @readonly
+     */
+    private String compilerId;
+
+    /**
+     * Version of the compiler to use, ex. "1.3", "1.5", if fork is set to true.
+     *
+     * @parameter expression="${maven.compiler.compilerVersion}"
+     * @readonly
+     */
+    private String compilerVersion;
+
+    /**
+     * Sets the executable of the compiler to use when fork is true.
+     *
+     * @parameter expression="${maven.compiler.executable}"
+     * @readonly
+     */
+    private String executable;
+
+    /**
+     * The directory to run the compiler from if fork is true.
+     *
+     * @parameter expression="${basedir}"
+     * @required
+     * @readonly
+     */
+    protected File basedir;
+
+    /**
+     * The target directory of the compiler if fork is true.
+     *
+     * @parameter expression="${project.build.directory}"
+     * @required
+     * @readonly
+     */
+    private File buildDirectory;
+
+    /**
+     * Plexus compiler manager.
+     *
+     * @component
+     * @readonly
+     */
+    private CompilerManager compilerManager;
+
+    /**
+     * The project to create a build for.
+     *
+     * @parameter expression="${project}"
+     * @required
+     * @readonly
+     */
+    protected MavenProject project;
+
+    protected SourceInclusionScanner getSourceInclusionScanner(int staleMillis) {
+        return new StaleSourceScanner(staleMillis);
+    }
+
+    protected SourceInclusionScanner getSourceInclusionScanner(String inputFileEnding) {
+        Set includes = Collections.singleton("**/*." + inputFileEnding);
+        return new SimpleSourceInclusionScanner(includes, Collections.EMPTY_SET);
+    }
+
+    /**
+     * Test if the resources have been changed
+     * @return
+     * @throws MojoExecutionException
+     */
+    protected boolean isResourceChanged() throws MojoExecutionException {
+        return isChanged(project.getResources(), project.getBuild().getOutputDirectory());
+    }
+
+    protected boolean isTestResourceChanged() throws MojoExecutionException {
+        return isChanged(project.getTestResources(), project.getBuild().getTestOutputDirectory());
+    }
+    
+    private static final String[] EMPTY_STRING_ARRAY = {};
+
+    private static final String[] DEFAULT_INCLUDES = {"**/**"};
+
+    /**
+     * Test if any of the resources have been changed
+     * @param resources
+     * @param outputDirectory
+     * @return
+     * @throws MojoExecutionException
+     */
+    protected boolean isChanged(List resources, String outputDirectory) throws MojoExecutionException {
+
+        for (Iterator i = resources.iterator(); i.hasNext();) {
+            Resource resource = (Resource)i.next();
+
+            String targetPath = resource.getTargetPath();
+
+            File resourceDirectory = new File(resource.getDirectory());
+
+            if (!resourceDirectory.exists()) {
+                continue;
+            }
+
+            // this part is required in case the user specified "../something" as destination
+            // see MNG-1345
+            File outputDir = new File(outputDirectory);
+            if (!outputDir.exists()) {
+                return true;
+            }
+
+            DirectoryScanner scanner = new DirectoryScanner();
+
+            scanner.setBasedir(resource.getDirectory());
+            if (resource.getIncludes() != null && !resource.getIncludes().isEmpty()) {
+                scanner.setIncludes((String[])resource.getIncludes().toArray(EMPTY_STRING_ARRAY));
+            } else {
+                scanner.setIncludes(DEFAULT_INCLUDES);
+            }
+            if (resource.getExcludes() != null && !resource.getExcludes().isEmpty()) {
+                scanner.setExcludes((String[])resource.getExcludes().toArray(EMPTY_STRING_ARRAY));
+            }
+
+            scanner.addDefaultExcludes();
+            scanner.scan();
+
+            List includedFiles = Arrays.asList(scanner.getIncludedFiles());
+            for (Iterator j = includedFiles.iterator(); j.hasNext();) {
+                String name = (String)j.next();
+
+                String destination = name;
+
+                if (targetPath != null) {
+                    destination = targetPath + "/" + name;
+                }
+
+                File source = new File(resource.getDirectory(), name);
+
+                File destinationFile = new File(outputDirectory, destination);
+
+                if (!destinationFile.exists()) {
+                    return true;
+                } else {
+                    if (source.lastModified() > destinationFile.lastModified()) {
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
+    protected boolean isSourceChanged(Compiler compiler) throws MojoExecutionException {
+        try {
+            List sourceRoots = project.getCompileSourceRoots();
+            File outputDir = new File(project.getBuild().getOutputDirectory());
+            List classPathEntries = project.getCompileClasspathElements();
+            return isChanged(compiler, sourceRoots, classPathEntries, outputDir);
+        } catch (Exception e) {
+            throw new MojoExecutionException(e.getMessage(), e);
+        }
+    }
+
+    protected boolean isTestSourceChanged(Compiler compiler) throws MojoExecutionException {
+        try {
+            List sourceRoots = project.getTestCompileSourceRoots();
+            File outputDir = new File(project.getBuild().getTestOutputDirectory());
+            List classPathEntries = project.getTestClasspathElements();
+            return isChanged(compiler, sourceRoots, classPathEntries, outputDir);
+        } catch (Exception e) {
+            throw new MojoExecutionException(e.getMessage(), e);
+        }
+    }
+
+    public boolean isChanged(Compiler compiler, List sourceRoots, List classPathEntries, File outputDir)
+        throws MojoExecutionException {
+        List compileSourceRoots = removeEmptyCompileSourceRoots(sourceRoots);
+
+        if (compileSourceRoots.isEmpty()) {
+            getLog().info("No sources to compile");
+            return false;
+        }
+
+        // ----------------------------------------------------------------------
+        // Create the compiler configuration
+        // ----------------------------------------------------------------------
+
+        CompilerConfiguration compilerConfiguration = new CompilerConfiguration();
+
+        compilerConfiguration.setOutputLocation(outputDir.getAbsolutePath());
+
+        compilerConfiguration.setClasspathEntries(classPathEntries);
+
+        compilerConfiguration.setSourceLocations(compileSourceRoots);
+
+        compilerConfiguration.setOptimize(false);
+
+        compilerConfiguration.setDebug(true);
+
+        compilerConfiguration.setVerbose(false);
+
+        compilerConfiguration.setShowWarnings(false);
+
+        compilerConfiguration.setShowDeprecation(true);
+
+        compilerConfiguration.setSourceVersion(source);
+
+        compilerConfiguration.setTargetVersion(target);
+
+        compilerConfiguration.setSourceEncoding(encoding);
+
+        compilerConfiguration.setExecutable(executable);
+
+        compilerConfiguration.setWorkingDirectory(basedir);
+
+        compilerConfiguration.setCompilerVersion(compilerVersion);
+
+        compilerConfiguration.setBuildDirectory(buildDirectory);
+
+        compilerConfiguration.setOutputFileName(project.getBuild().getFinalName());
+
+        // TODO: have an option to always compile (without need to clean)
+        Set staleSources;
+
+        boolean canUpdateTarget;
+
+        try {
+            staleSources =
+                computeStaleSources(compilerConfiguration,
+                                    compiler,
+                                    getSourceInclusionScanner(staleMillis),
+                                    sourceRoots,
+                                    outputDir);
+
+            canUpdateTarget = compiler.canUpdateTarget(compilerConfiguration);
+
+            if (compiler.getCompilerOutputStyle().equals(CompilerOutputStyle.ONE_OUTPUT_FILE_FOR_ALL_INPUT_FILES) && !canUpdateTarget) {
+                getLog().info("RESCANNING!");
+                // TODO: This second scan for source files is sub-optimal
+                String inputFileEnding = compiler.getInputFileEnding(compilerConfiguration);
+
+                Set sources =
+                    computeStaleSources(compilerConfiguration,
+                                        compiler,
+                                        getSourceInclusionScanner(inputFileEnding),
+                                        sourceRoots,
+                                        outputDir);
+
+                compilerConfiguration.setSourceFiles(sources);
+            } else {
+                compilerConfiguration.setSourceFiles(staleSources);
+            }
+        } catch (CompilerException e) {
+            throw new MojoExecutionException("Error while computing stale sources.", e);
+        }
+
+        return !staleSources.isEmpty();
+
+    }
+
+    protected Compiler getCompiler() throws MojoExecutionException {
+        Compiler compiler;
+
+        getLog().debug("Using compiler '" + compilerId + "'.");
+
+        try {
+            compiler = compilerManager.getCompiler(compilerId);
+        } catch (NoSuchCompilerException e) {
+            throw new MojoExecutionException("No such compiler '" + e.getCompilerId() + "'.");
+        }
+        return compiler;
+    }
+
+    protected Set computeStaleSources(CompilerConfiguration compilerConfiguration,
+                                      Compiler compiler,
+                                      SourceInclusionScanner scanner,
+                                      List sourceRoots,
+                                      File outputDir) throws MojoExecutionException, CompilerException {
+        CompilerOutputStyle outputStyle = compiler.getCompilerOutputStyle();
+
+        SourceMapping mapping;
+
+        File outputDirectory;
+
+        if (outputStyle == CompilerOutputStyle.ONE_OUTPUT_FILE_PER_INPUT_FILE) {
+            mapping =
+                new SuffixMapping(compiler.getInputFileEnding(compilerConfiguration), compiler
+                    .getOutputFileEnding(compilerConfiguration));
+
+            outputDirectory = outputDir;
+        } else if (outputStyle == CompilerOutputStyle.ONE_OUTPUT_FILE_FOR_ALL_INPUT_FILES) {
+            mapping =
+                new SingleTargetSourceMapping(compiler.getInputFileEnding(compilerConfiguration), compiler
+                    .getOutputFile(compilerConfiguration));
+
+            outputDirectory = buildDirectory;
+        } else {
+            throw new MojoExecutionException("Unknown compiler output style: '" + outputStyle + "'.");
+        }
+
+        scanner.addSourceMapping(mapping);
+
+        Set staleSources = new HashSet();
+
+        for (Iterator it = sourceRoots.iterator(); it.hasNext();) {
+            String sourceRoot = (String)it.next();
+
+            File rootFile = new File(sourceRoot);
+
+            if (!rootFile.isDirectory()) {
+                continue;
+            }
+
+            try {
+                Set changed = scanner.getIncludedSources(rootFile, outputDirectory);
+                staleSources.addAll(changed);
+            } catch (InclusionScanException e) {
+                throw new MojoExecutionException("Error scanning source root: \'" + sourceRoot
+                    + "\' "
+                    + "for stale files to recompile.", e);
+            }
+        }
+
+        return staleSources;
+    }
+
+    /**
+     * @todo also in ant plugin. This should be resolved at some point so that it does not need to
+     * be calculated continuously - or should the plugins accept empty source roots as is?
+     */
+    private static List removeEmptyCompileSourceRoots(List compileSourceRootsList) {
+        List newCompileSourceRootsList = new ArrayList();
+        if (compileSourceRootsList != null) {
+            // copy as I may be modifying it
+            for (Iterator i = compileSourceRootsList.iterator(); i.hasNext();) {
+                String srcDir = (String)i.next();
+                if (!newCompileSourceRootsList.contains(srcDir) && new File(srcDir).exists()) {
+                    newCompileSourceRootsList.add(srcDir);
+                }
+            }
+        }
+        return newCompileSourceRootsList;
+    }
+}

Propchange: incubator/tuscany/java/sca/tools/maven/maven-incremental-build/src/main/java/org/apache/tuscany/sca/tools/incremental/build/plugin/AbstractBuildMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/tools/maven/maven-incremental-build/src/main/java/org/apache/tuscany/sca/tools/incremental/build/plugin/AbstractBuildMojo.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/tools/maven/maven-incremental-build/src/main/java/org/apache/tuscany/sca/tools/incremental/build/plugin/IncrementalBuildMojo.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/tools/maven/maven-incremental-build/src/main/java/org/apache/tuscany/sca/tools/incremental/build/plugin/IncrementalBuildMojo.java?rev=603783&r1=603782&r2=603783&view=diff
==============================================================================
--- incubator/tuscany/java/sca/tools/maven/maven-incremental-build/src/main/java/org/apache/tuscany/sca/tools/incremental/build/plugin/IncrementalBuildMojo.java (original)
+++ incubator/tuscany/java/sca/tools/maven/maven-incremental-build/src/main/java/org/apache/tuscany/sca/tools/incremental/build/plugin/IncrementalBuildMojo.java Wed Dec 12 16:42:25 2007
@@ -19,10 +19,8 @@
 package org.apache.tuscany.sca.tools.incremental.build.plugin;
 
 import java.io.File;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -30,16 +28,13 @@
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFile;
-import org.apache.maven.scm.command.status.StatusScmResult;
-import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.maven.settings.Settings;
 import org.apache.maven.shared.invoker.DefaultInvocationRequest;
 import org.apache.maven.shared.invoker.InvocationRequest;
 import org.apache.maven.shared.invoker.InvocationResult;
 import org.apache.maven.shared.invoker.Invoker;
 import org.apache.maven.shared.invoker.MavenInvocationException;
-import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.compiler.Compiler;
 import org.codehaus.plexus.util.cli.CommandLineException;
 
 /**
@@ -49,22 +44,29 @@
  * @requiresDependencyResolution test
  * @description Incrementally build project modules that depend on modified modules.
  */
-public class IncrementalBuildMojo extends AbstractScmMojo {
+public class IncrementalBuildMojo extends AbstractBuildMojo {
     /**
-     * The project to create a build for.
-     *
-     * @parameter expression="${project}"
-     * @required
+     * Keep track of modified projects.
      */
-    private MavenProject project;
+    private static Set<String> modifiedProjectIDs = new HashSet<String>();
 
     /**
-     * The local repository where the artifacts are located
-     *
-     * @parameter expression="${localRepository}"
-     * @required
+     * Returns the qualified id of an artifact .
+     * @param p a Maven artifact
+     * @return a qualified id
      */
-    private ArtifactRepository localRepository;
+    private static String id(Artifact a) {
+        return a.getGroupId() + ':' + a.getArtifactId();
+    }
+
+    /**
+     * Returns the qualified id of a project.
+     * @param p a Maven project
+     * @return a qualified id
+     */
+    private static String id(MavenProject p) {
+        return p.getGroupId() + ':' + p.getArtifactId();
+    }
 
     /**
      * The current user system settings for use in Maven.
@@ -82,56 +84,35 @@
     private Invoker invoker;
 
     /**
-     * @parameter expression="${scm}" default-value=true
-     */
-    private boolean scm;
-
-    /**
-     * Keep track of modified projects.
-     */
-    private static Set<String> modifiedProjectIDs = new HashSet<String>();
-
-    /**
-     * Returns the qualified id of a project.
-     * @param p a Maven project
-     * @return a qualified id
+     * The local repository where the artifacts are located
+     *
+     * @parameter expression="${localRepository}"
+     * @required
      */
-    private static String id(MavenProject p) {
-        return p.getGroupId() + ':' + p.getArtifactId();
-    }
+    private ArtifactRepository localRepository;
 
     /**
-     * Returns the qualified id of an artifact .
-     * @param p a Maven artifact
-     * @return a qualified id
+     * @parameter expression="${settings}"
+     * @required
+     * @readonly
      */
-    private static String id(Artifact a) {
-        return a.getGroupId() + ':' + a.getArtifactId();
-    }
+    protected Settings settings;
 
     public void execute() throws MojoExecutionException {
         getLog().info("Building " + project.getName() + " [" + project.getId() + "]");
         String type = project.getArtifact().getType();
         if ("pom".equals(type)) {
-            // project.getModules();
-            // throw new MojoExecutionException("The incremental build cannot run with a pom module");
             return;
         }
         String projectID = id(project);
 
-        boolean changed = false;
-        // Determine if the project has been modified
-        String marker = project.getBasedir().getPath() + "/.modified";
-        if (new File(marker).exists()) {
-            getLog().info("Project: " + projectID + " has been modified.");
-            changed = true;
+        Compiler compiler = getCompiler();
+        boolean changed = isSourceChanged(compiler) || isResourceChanged();
+        boolean testChanged = false;
+        if (changed) {
             modifiedProjectIDs.add(projectID);
-        } else if (scm) {
-            if (!getStatus().getChangedFiles().isEmpty()) {
-                getLog().info("Project: " + projectID + " has been modified.");
-                changed = true;
-                modifiedProjectIDs.add(projectID);
-            }
+        } else {
+            testChanged = isTestSourceChanged(compiler) || isTestResourceChanged();
         }
 
         // Check if a project has compile dependencies on the modified projects
@@ -174,6 +155,10 @@
             }
         }
 
+        if (testChanged && goals.isEmpty()) {
+            goals.add("test");
+        }
+
         // Invoke Maven with the necessary goals
         if (!goals.isEmpty()) {
             InvocationRequest request = new DefaultInvocationRequest();
@@ -203,57 +188,6 @@
                 e.printStackTrace();
                 throw new MojoExecutionException(e.getMessage(), e);
             }
-        }
-    }
-
-    protected StatusScmResult getStatus() throws MojoExecutionException {
-        try {
-            ScmRepository repository = getScmRepository();
-
-            StatusScmResult result = getScmManager().status(repository, getFileSet());
-
-            checkResult(result);
-
-            File baseDir = getFileSet().getBasedir();
-
-            // Determine the maximum length of the status column
-            int maxLen = 0;
-
-            for (Iterator iter = result.getChangedFiles().iterator(); iter.hasNext();) {
-                ScmFile file = (ScmFile)iter.next();
-                maxLen = Math.max(maxLen, file.getStatus().toString().length());
-            }
-
-            for (Iterator iter = result.getChangedFiles().iterator(); iter.hasNext();) {
-                ScmFile file = (ScmFile)iter.next();
-
-                // right align all of the statuses
-                getLog().info(StringUtils.leftPad(file.getStatus().toString(), maxLen) + " status for "
-                    + getRelativePath(baseDir, file.getPath()));
-            }
-            return result;
-        } catch (IOException e) {
-            throw new MojoExecutionException("Cannot run status command : ", e);
-        } catch (ScmException e) {
-            throw new MojoExecutionException("Cannot run status command : ", e);
-        }
-    }
-
-    /**
-     * Formats the filename so that it is a relative directory from the base.
-     *
-     * @param baseDir
-     * @param path
-     * @return The relative path
-     */
-    protected String getRelativePath(File baseDir, String path) {
-        if (path.equals(baseDir.getAbsolutePath())) {
-            return ".";
-        } else if (path.indexOf(baseDir.getAbsolutePath()) == 0) {
-            // the + 1 gets rid of a leading file separator
-            return path.substring(baseDir.getAbsolutePath().length() + 1);
-        } else {
-            return path;
         }
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org