# Maven Dependencies

> Install Maven dependencies and annotation processors.

```bash
elide install
```

Maven is the default ecosystem. Buckets, repositories, credentials and install options:
[Dependencies](https://elide.help/docs/toolchain/dependencies).

## Projects with only a `pom.xml`

```bash
elide install -p .
```

Elide reads the POM's direct dependencies, `${property}` values and its own `dependencyManagement`. Parents and
imported BOMs are not merged; a dependency versioned only by a parent is dropped.

| POM scope | Bucket |
| --- | --- |
| `compile` | `packages` |
| `provided`, `system` | `compileOnly` |
| `runtime` | `runtimeOnly` |
| `test` | `testPackages` |

To run Maven goals, use [Native Maven](https://elide.help/docs/toolchain/jvm/native-maven).

## Annotation processors

```pkl
dependencies {
  maven {
    packages { "org.mapstruct:mapstruct:1.6.3" }
    processors { "org.mapstruct:mapstruct-processor:1.6.3" }
  }
}
```

- Processors run in `elide build` and `elide javac`, on main and test source sets.
- A changed processor JAR recompiles.
- Generated sources go to `.dev/jvm/generated-sources/<set>/java` and compile with the set.
- Kotlin compiles before Java processing: Kotlin that uses generated types must take them from an upstream source
  set or project.
- KAPT and KSP are unsupported.
- `elide javac --capabilities` reports compiler support.
