org.scala_tools.maven
Class ScalaCompilerSupport

Package class diagram package ScalaCompilerSupport
java.lang.Object
  extended by org.apache.maven.plugin.AbstractMojo
      extended by org.scala_tools.maven.ScalaCompilerSupport
All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo
Direct Known Subclasses:
ScalaCompileMojo, ScalaContinuousCompileMojo, ScalaTestCompileMojo

public abstract class ScalaCompilerSupport
extends org.apache.maven.plugin.AbstractMojo

Abstract parent of all Scala Mojo


Field Summary
protected  java.lang.String[] args
          compiler additionnals arguments
protected  BasicArtifact[] dependencies
          Additional dependencies/jar to add to classpath to run "scalaClassName" (scope and optional field not supported) ex : <dependencies> <dependency> <groupId>org.scala-tools</groupId> <artifactId>scala-compiler-addon</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>
protected  boolean displayCmd
          Display the command line called ?
protected  org.apache.maven.artifact.factory.ArtifactFactory factory
          Used to look up Artifacts in the remote repository.
protected  java.lang.String[] jvmArgs
          Jvm Arguments.
protected  org.apache.maven.artifact.repository.ArtifactRepository localRepo
          Location of the local repository.
protected  long loopSleep
          Pause duration between to scan to detect changed file to compile.
protected  org.apache.maven.project.MavenProjectBuilder mavenProjectBuilder
          Artifact factory, needed to download source jars.
protected  org.apache.maven.project.MavenProject project
           
protected  java.util.List<?> remoteRepos
          List of Remote Repositories used by the resolver
protected  org.apache.maven.artifact.resolver.ArtifactResolver resolver
          Used to look up Artifacts in the remote repository.
static java.lang.String SCALA_GROUPID
           
static java.lang.String SCALA_LIBRARY_ARTIFACTID
           
protected  java.lang.String scalaClassName
          className (FQN) of the scala tool to provide as
protected  java.lang.String scalaVersion
          Scala 's version to use
 
Fields inherited from interface org.apache.maven.plugin.Mojo
ROLE
 
Constructor Summary
ScalaCompilerSupport()
           
 
Method Summary
protected  void addToClasspath(org.apache.maven.artifact.Artifact artifact, java.util.Set<java.lang.String> classpath)
           
protected  void addToClasspath(java.lang.String groupId, java.lang.String artifactId, java.lang.String version, java.util.Set<java.lang.String> classpath)
           
protected  void checkScalaVersion()
           
protected  int compile(java.io.File sourceDir, java.io.File outputDir, java.util.List<java.lang.String> classpathElements, boolean compileInLoop)
           
protected  void doExecute()
           
 void execute()
           
protected abstract  java.util.List<java.lang.String> getClasspathElements()
           
protected  java.util.List<org.apache.maven.model.Dependency> getDependencies()
           
protected  JavaCommand getEmptyScalaCommand(java.lang.String mainClass)
           
protected abstract  java.io.File getOutputDir()
           
protected  JavaCommand getScalaCommand()
           
protected abstract  java.io.File getSourceDir()
           
protected  java.io.File normalize(java.io.File f)
           
protected  java.util.Set<org.apache.maven.artifact.Artifact> resolveArtifactDependencies(org.apache.maven.artifact.Artifact artifact)
          This method resolves all transitive dependencies of an artifact.
protected  java.util.Set<org.apache.maven.artifact.Artifact> resolveDependencyArtifacts(org.apache.maven.project.MavenProject theProject)
          This method resolves the dependency artifacts from the project.
 
Methods inherited from class org.apache.maven.plugin.AbstractMojo
getLog, getPluginContext, setLog, setPluginContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

loopSleep

protected long loopSleep
Pause duration between to scan to detect changed file to compile. Used only if compileInLoop or testCompileInLoop is true.


SCALA_GROUPID

public static final java.lang.String SCALA_GROUPID
See Also:
Constant Field Values

SCALA_LIBRARY_ARTIFACTID

public static final java.lang.String SCALA_LIBRARY_ARTIFACTID
See Also:
Constant Field Values

project

protected org.apache.maven.project.MavenProject project

factory

protected org.apache.maven.artifact.factory.ArtifactFactory factory
Used to look up Artifacts in the remote repository.


resolver

protected org.apache.maven.artifact.resolver.ArtifactResolver resolver
Used to look up Artifacts in the remote repository.


localRepo

protected org.apache.maven.artifact.repository.ArtifactRepository localRepo
Location of the local repository.


remoteRepos

protected java.util.List<?> remoteRepos
List of Remote Repositories used by the resolver


dependencies

protected BasicArtifact[] dependencies
Additional dependencies/jar to add to classpath to run "scalaClassName" (scope and optional field not supported) ex : <dependencies> <dependency> <groupId>org.scala-tools</groupId> <artifactId>scala-compiler-addon</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>


jvmArgs

protected java.lang.String[] jvmArgs
Jvm Arguments.


args

protected java.lang.String[] args
compiler additionnals arguments


scalaClassName

protected java.lang.String scalaClassName
className (FQN) of the scala tool to provide as


scalaVersion

protected java.lang.String scalaVersion
Scala 's version to use


displayCmd

protected boolean displayCmd
Display the command line called ?


mavenProjectBuilder

protected org.apache.maven.project.MavenProjectBuilder mavenProjectBuilder
Artifact factory, needed to download source jars.

Constructor Detail

ScalaCompilerSupport

public ScalaCompilerSupport()
Method Detail

getOutputDir

protected abstract java.io.File getOutputDir()
                                      throws java.lang.Exception
Throws:
java.lang.Exception

getSourceDir

protected abstract java.io.File getSourceDir()
                                      throws java.lang.Exception
Throws:
java.lang.Exception

getClasspathElements

protected abstract java.util.List<java.lang.String> getClasspathElements()
                                                                  throws java.lang.Exception
Throws:
java.lang.Exception

doExecute

protected void doExecute()
                  throws java.lang.Exception
Throws:
java.lang.Exception

normalize

protected java.io.File normalize(java.io.File f)

compile

protected int compile(java.io.File sourceDir,
                      java.io.File outputDir,
                      java.util.List<java.lang.String> classpathElements,
                      boolean compileInLoop)
               throws java.lang.Exception,
                      java.lang.InterruptedException
Throws:
java.lang.Exception
java.lang.InterruptedException

resolveDependencyArtifacts

protected java.util.Set<org.apache.maven.artifact.Artifact> resolveDependencyArtifacts(org.apache.maven.project.MavenProject theProject)
                                                                                throws java.lang.Exception
This method resolves the dependency artifacts from the project.

Parameters:
theProject - The POM.
Returns:
resolved set of dependency artifacts.
Throws:
org.apache.maven.artifact.resolver.ArtifactResolutionException
org.apache.maven.artifact.resolver.ArtifactNotFoundException
org.apache.maven.project.artifact.InvalidDependencyVersionException
java.lang.Exception

resolveArtifactDependencies

protected java.util.Set<org.apache.maven.artifact.Artifact> resolveArtifactDependencies(org.apache.maven.artifact.Artifact artifact)
                                                                                 throws java.lang.Exception
This method resolves all transitive dependencies of an artifact.

Parameters:
artifact - the artifact used to retrieve dependencies
Returns:
resolved set of dependencies
Throws:
org.apache.maven.artifact.resolver.ArtifactResolutionException
org.apache.maven.artifact.resolver.ArtifactNotFoundException
org.apache.maven.project.ProjectBuildingException
org.apache.maven.project.artifact.InvalidDependencyVersionException
java.lang.Exception

addToClasspath

protected void addToClasspath(java.lang.String groupId,
                              java.lang.String artifactId,
                              java.lang.String version,
                              java.util.Set<java.lang.String> classpath)
                       throws java.lang.Exception
Throws:
java.lang.Exception

addToClasspath

protected void addToClasspath(org.apache.maven.artifact.Artifact artifact,
                              java.util.Set<java.lang.String> classpath)
                       throws java.lang.Exception
Throws:
java.lang.Exception

execute

public void execute()
             throws org.apache.maven.plugin.MojoExecutionException,
                    org.apache.maven.plugin.MojoFailureException
Throws:
org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoFailureException

getDependencies

protected java.util.List<org.apache.maven.model.Dependency> getDependencies()

checkScalaVersion

protected void checkScalaVersion()
                          throws java.lang.Exception
Throws:
java.lang.Exception

getScalaCommand

protected JavaCommand getScalaCommand()
                               throws java.lang.Exception
Throws:
java.lang.Exception

getEmptyScalaCommand

protected JavaCommand getEmptyScalaCommand(java.lang.String mainClass)
                                    throws java.lang.Exception
Throws:
java.lang.Exception