# Using &binding.impl.name; with Maven

## Maven coordinates for &binding.impl.name; artifacts

- jakarta.xml.bind:jakarta.xml.bind-api: API classes for &binding.spec.name;. Required to compile against &binding.spec.name;.

- org.glassfish.jaxb:jaxb-core: Contains sources required by XJC, JXC and Runtime modules.

- org.glassfish.jaxb:jaxb-runtime: Contains the main runtime used for serialization and deserialization java objects to/from xml.

- org.glassfish.jaxb:jaxb-xjc: Tool to generate &binding.spec.name; java sources from XML representation.

- org.glassfish.jaxb:jaxb-jxc: Tool to generate XML schema from &binding.spec.name; java sources.

## JAXB RI bundles

- com.sun.xml.bind:jaxb-core: Contains sources required by XJC, JXC and Runtime modules with dependencies.

- com.sun.xml.bind:jaxb-impl: &binding.impl.name; runtime jar.

- com.sun.xml.bind:jaxb-xjc: Class generation tool jar.

- com.sun.xml.bind:jaxb-jxc: Schema generation tool jar.

In contrast to `org.glassfish.jaxb` artifacts, these jars have all dependency classes included inside.

## Binary distribution

- com.sun.xml.bind:jaxb-ri: Zip distribution containing tooling scripts and all dependency jars in one archive.

## &binding.spec.name; API and Runtime

Minimum requirement to compile is `jakarta.xml.bind-api.jar`. If a client application is running on an environment where &binding.spec.name; runtime is provided, `jakarta.xml.bind-api.jar` is all that is needed.

API only

                    <!-- API -->
                    <dependency>
                        <groupId>jakarta.xml.bind</groupId>
                        <artifactId>jakarta.xml.bind-api</artifactId>
                        <version>&binding.spec.impl.version;</version>
                    </dependency>

If client application needs to include the runtime, e.g. running standalone on Java SE `jaxb-impl` should be also included.

API + Runtime

                    <!-- API -->
                    <dependency>
                        <groupId>jakarta.xml.bind</groupId>
                        <artifactId>jakarta.xml.bind-api</artifactId>
                        <version>&binding.spec.impl.version;</version>
                    </dependency>

                    <!-- Runtime -->
                    <dependency>
                        <groupId>com.sun.xml.bind</groupId>
                        <artifactId>jaxb-impl</artifactId>
                        <version>&version;</version>
                    </dependency>