# Bundling

interface Bundling : Named

This attribute describes how dependencies of a component are found. There are currently 3 supported modes:

- `external`, the default, where dependencies, if any, are found transitively
- `embedded`, where dependencies are found inside the component, but using the same namespace as the original dependencies
- `shadowed`, where dependencies are found inside the component, but within a different namespace to avoid name clashes

As a practical example, let's consider the Java ecosystem:

- Jar component:
  - `external` indicates that transitive dependencies are themselves component jars
  - `embedded` indicates that transitive dependencies have been included inside the component jar, without modifying their packages
  - `shadowed` indicates that transitive dependencies have been included inside the component jar, under different packages to prevent conflicts
- Sources component:
  - `external` indicates that the source of transitive dependencies are themselves source jars
  - `embedded` indicates that the source of transitive dependencies have been included inside the component source jar, without modifying their packages
  - `shadowed` indicates that the source of transitive dependencies have been included inside the component source jar, under different packages

#### Since

5.3

## Properties

BUNDLING_ATTRIBUTE
Link copied to clipboard
val BUNDLING_ATTRIBUTE: Attribute<Bundling>
EMBEDDED
Link copied to clipboard
val EMBEDDED: String = "embedded"
Dependencies are packaged within the main component artifact.
EXTERNAL
Link copied to clipboard
val EXTERNAL: String = "external"
The most common case: dependencies are provided as individual components.
SHADOWED
Link copied to clipboard
val SHADOWED: String = "shadowed"
Dependencies are packaged within the main component artifact but also in a different namespace to prevent conflicts.

## Functions

getName
Link copied to clipboard
abstract fun getName(): String