Skip to main content

groovy_library

A groovy_library() rule is used to define a set of Groovy files that can be compiled together. It can also be used to cross compile a set of Groovy and Java files. The main output of a groovy_library() rule is a single JAR file containing all of the compiled class files and resources.

Function Signature

def groovy_library(
*,
name: str,
default_target_platform: None | str = None,
target_compatible_with: list[str] = [],
compatible_with: list[str] = [],
exec_compatible_with: list[str] = [],
visibility: list[str] = [],
within_view: list[str] = ["PUBLIC"],
metadata: OpaqueMetadata = {},
tests: list[str] = [],
modifiers: OpaqueMetadata = [],
_apple_platforms: dict[str, str] = {},
annotation_processor_deps: list[str] = [],
annotation_processor_params: list[str] = [],
annotation_processors: list[str] = [],
contacts: list[str] = [],
default_host_platform: None | str = None,
deps: list[str] = [],
exported_deps: list[str] = [],
exported_provided_deps: list[str] = [],
extra_arguments: list[str] = [],
extra_groovyc_arguments: list[str] = [],
java_version: None | str = None,
javac: None | str = None,
labels: list[str] = [],
licenses: list[str] = [],
manifest_file: None | str = None,
maven_coords: None | str = None,
never_mark_as_unused_dependency: None | bool = None,
non_exec_dep_plugins_deprecated: list[str | (str, list[str])] = [],
on_unused_dependencies: None | str = None,
plugins: list[str | (str, list[str])] = [],
proguard_config: None | str = None,
provided_deps: list[str] = [],
remove_classes: list[str] = [],
required_for_source_only_abi: bool = False,
resources: list[str] = [],
resources_root: None | str = None,
runtime_deps: list[str] = [],
source: None | str = None,
source_abi_verification_mode: None | str = None,
source_only_abi_deps: list[str] = [],
srcs: list[str] = [],
target: None | str = None,
) -> None

Parameters

  • name: (required)

    name of the target

  • default_target_platform: (defaults to: None)

    specifies the default target platform, used when no platforms are specified on the command line

  • target_compatible_with: (defaults to: [])

    a list of constraints that are required to be satisfied for this target to be compatible with a configuration

  • compatible_with: (defaults to: [])

    a list of constraints that are required to be satisfied for this target to be compatible with a configuration

  • exec_compatible_with: (defaults to: [])

    a list of constraints that are required to be satisfied for this target to be compatible with an execution platform

  • visibility: (defaults to: [])

    a list of visibility patterns restricting what targets can depend on this one

  • within_view: (defaults to: ["PUBLIC"])

    a list of visibility patterns restricting what this target can depend on

  • metadata: (defaults to: {})

    a key-value map of metadata associated with this target

  • tests: (defaults to: [])

    a list of targets that provide tests for this one

  • modifiers: (defaults to: [])

    an array of modifiers associated with this target

  • deps: (defaults to: [])

    Rules (usually other groovy_library or java_library() rules) that are used to generate the classpath required to compile this groovy_library.

    This is the same as in java_library().

  • exported_deps: (defaults to: [])

    Other groovy_library and java_library() rules that depend on this rule will also include its exported_deps in their classpaths.

    This is the same as in java_library().

  • extra_arguments: (defaults to: [])

    Only used during cross compilation.

    This is the same as in java_library().

  • extra_groovyc_arguments: (defaults to: [])

    List of additional arguments to pass into the Groovy compiler.

  • java_version: (defaults to: None)

    Only used during cross compilation.

    This is the same as in java_library().

  • javac: (defaults to: None)

    Specifies the Java compiler program to use for this rule. The value is a source path or an execution dep (e.g., //foo/bar:bar). Overrides the value in "javac" in the "tools" section of .buckconfig.

  • non_exec_dep_plugins_deprecated: (defaults to: [])

    Plugins that do not use the execution platform. This exists for historical reasons, and should not be used. Use plugins instead - plugins should be configured for the execution platform since that is where they are used.

  • plugins: (defaults to: [])

    List of plugins that should be run during compilation of the target. A list of strings may additionally be provided in order to pass additional arguments to the plugin.

  • provided_deps: (defaults to: [])

    This is the same as in java_library().

  • resources: (defaults to: [])

    This is the same as in java_library().

  • source: (defaults to: None)

    Only used during cross compilation.

    This is the same as in java_library().

  • srcs: (defaults to: [])

    The set of files to compile for this rule. Usually these will all end in .groovy, but if any of the files end in .java, cross compilation using the jdk found in JAVA_HOME will occur.

  • target: (defaults to: None)

    Only used during cross compilation.

    This is the same as in java_library().

Examples



# A rule that compiles a single .groovy file.
groovy_library(
name = 'example',
srcs = ['MySourceFile.groovy'],
)




# A rule that compiles all of the .groovy files under the directory in
# which the rule is defined using glob()
groovy_library(
name = 'groovy-only',
srcs = glob(['**/*.groovy']),
)




# A rule that cross compiles all of the .groovy and .java files under
# the directory in which the rule is defined, failing if compiling the
# java files generates any compiler warnings
groovy_library(
name = 'cross-compilation',
srcs = glob(['**/*.groovy', '**/*.java']),
java_version = 8,
extra_arguments = [
'-Werror',
],
)