# Interface Bundling

All Superinterfaces:
  `Named`

public interface Bundling extends 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

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface Named

  `Named.Namer`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final Attribute<Bundling>`
  `BUNDLING_ATTRIBUTE`
  `static final String`
  `EMBEDDED`
  Dependencies are packaged within the main component artifact.
  `static final String`
  `EXTERNAL`
  The most common case: dependencies are provided as individual components.
  `static final String`
  `SHADOWED`
  Dependencies are packaged within the main component artifact but also in a different namespace to prevent conflicts.

- ## Method Summary

  ### Methods inherited from interface Named

  `getName`

- ## Field Details

  - ### BUNDLING_ATTRIBUTE

    static final Attribute<Bundling> BUNDLING_ATTRIBUTE

  - ### EXTERNAL

    static final String EXTERNAL
    The most common case: dependencies are provided as individual components.
    See Also:
      - Constant Field Values

  - ### EMBEDDED

    static final String EMBEDDED
    Dependencies are packaged within the main component artifact.
    See Also:
      - Constant Field Values

  - ### SHADOWED

    static final String SHADOWED
    Dependencies are packaged within the main component artifact but also in a different namespace to prevent conflicts.
    See Also:
      - Constant Field Values