com.zfabrik.components.java.build
Interface ICompiler


public interface ICompiler

Java component (see IJavaComponent compiler extension interface.

This interface is implemented by implementation of components of type com.zfabrik.compiler.

Supported configuration properties:

compiler.id
An identifier for the compiler to be used when defining the compile order of a Java component using the java.compile.order property on the Java component.

Compiler extensions operate over a build result folder (usually .class files and other binary resources) that will be JARred at when all compilers have completed. Compilers will be passed a class path in the form of a class loader. When required, the actual files and folders of the classpath can be retrieved by casting that class loader to URLClassLoader and invoking URLClassLoader.getURLs().

Compilers are invoked in order of the specified java.compile.order (see IJavaComponent.COMPILE_ORDER). When declaring a compiler, a compiler.id must be specified that is used to reference the compiler when specifying the compiler order.

An example compiler component declaration looks like this:

 #
 # it's a compiler
 #
 com.zfabrik.component.type=com.zfabrik.java.compiler
 #
 # it's feature_x_compiler
 #
 compiler.id=feature_x_compiler
 #
 # it's implemented here
 #
 component.className=com.acme.impl.FeatureXCompiler
 

Author:
hb

Nested Class Summary
static class ICompiler.initializer
           
 
Field Summary
static ICompiler ALL
          The facade over all compilers.
static java.lang.String COMPILER_ID
          The compiler ID must be defined in the compiler component - e.g.
static java.lang.String TYPE
          Compilers must define this type
 
Method Summary
 boolean compile(java.lang.String compName, java.io.File[] src, java.io.File dest, java.lang.ClassLoader cl)
          A general purpose compiler api using a class loader as class path abstraction.
 void init(ICompilerContext context)
          Compiler initialization
 

Field Detail

TYPE

static final java.lang.String TYPE
Compilers must define this type

See Also:
Constant Field Values

COMPILER_ID

static final java.lang.String COMPILER_ID
The compiler ID must be defined in the compiler component - e.g. java or scala

See Also:
Constant Field Values

ALL

static final ICompiler ALL
The facade over all compilers.

Method Detail

compile

boolean compile(java.lang.String compName,
                java.io.File[] src,
                java.io.File dest,
                java.lang.ClassLoader cl)
A general purpose compiler api using a class loader as class path abstraction. Returns true if the compilation passed otherwise it returns false

Parameters:
compName - the name of the component
src - folder containing the source files
dest - destination folder will contain compile results
cl - class loader as class path abstraction
Returns:
true, iff compilation succeeds

init

void init(ICompilerContext context)
Compiler initialization