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
    • Field Summary

      Fields 
      Modifier and Type Field Description
      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
    • 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
    • Method Detail

      • ALL

        default ICompiler ALL()
        Retrieve the "all" compiler, that uses the compile order to decide on what more specific compilers to use
        Returns:
      • compile

        @Deprecated
        default boolean compile​(java.lang.String compName,
                                java.io.File[] src,
                                java.io.File dest,
                                java.lang.ClassLoader cl)
        Deprecated.
        Implement compile(ICompilationContext) instead.
        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
      • compile

        default boolean compile​(ICompilationContext compilationContext)
        A general purpose compiler api using a class loader as class path abstraction. Returns true if the compilation passed otherwise it returns false. This method to be implemented for part specific handling. It defaults to invocation of compile(String, File[], File, ClassLoader).
        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
        part - of the component to compile
        Returns:
        true, iff compilation succeeds
      • init

        default void init​(ICompilerContext context)
        Compiler initialization