enunciate

articulate your web api.

Dependencies

A concerted effort was made to minimize dependency bloat. The dependency graph isn't pretty, but it is well-normalized. The complexity is aggravated by the fact the Enunciate libraries are used in two different contexts: build-time and runtime.

Build-time dependencies are requirements of the Enunciate build engine. Runtime dependencies are required by the artifacts that Enunciate generates. For example, in order to publish RESTful endpoints, the application container will require the necessary libraries that include Enunciate's REST annotations and the controllers that are used to support them.

Enunciate publishes a single jar that includes all Enunciate-specific build-time and runtime classes, called the "full" jar. This jar is named (by convention) "enunciate-full-[version].jar", where [version] is the version of the jar.

To provide more packaging flexibility, each module publishes a build jar and optionally a runtime jar. The build jar and the runtime jar are conventionally named enunciate-[module]-[version].jar and enunciate-[module]-tools-[version].jar, respectively, where [module] is the name of the module and [version] is the version. The build jars usually depend on the runtime jars, but only the runtime jars are needed at runtime. Each of these jars in turn have their own set of dependencies.

All dependency jars are included in the Enunciate distribution.

So, with that said, hopefully the following table will make more sense:

dependency tested version dependant modules build-time/runtime notes
tools.jar n/a all modules build-time Annotation processing. (Ships with Java SDK.)
jaxb-api 2.1.2 all modules both JAXB Annotations.
jaxws-api final all modules both JAX-WS Annotations
jsr-181 final all modules both JAX-WS Annotations
apt-jelly 2.3 all modules build-time only For invoking APT
freemarker 2.3.6 all modules build-time only For a templating engine, dependency of apt-jelly.
commons-digester 1.7 all modules build-time only For the configuration.
commons-beanutils 1.7 all modules build-time only Dependency of commons-digester
commons-logging 1.7 all modules build-time only Only as a dependency of commons digester.
XFire 1.2.2 xfire, xfire-client runtime only Used to publish and interface with SOAP endpoints.
jaxb-impl 2.1.2 rest, xfire runtime only Marshal/unmarshal JAXB types.
stax-api 1.0.1 rest, xfire runtime only Marshal/unmarshal JAXB types.
StAX Implementation woodstox 2.9.3 rest, xfire runtime only Marshal/unmarshal JAXB types.
spring-mvc 1.2.9 rest, xfire, gwt, amf, spring-app runtime only Using Spring MVC for publshing the endpoints.
jettison 1.0-RC2 rest runtime only Only needed if you want to publish JSON endpoints.
jdom 1.0 xfire, xfire-client runtime only Dependency of xfire.
JAF mail-1.4, activation-1.1 xfire, xfire-client runtime only Used for attachments
commons-httpclient 3.0 xfire-client runtime only Used for invoking the xfire client to interface with the SOAP API.
commons-codec 1.3 xfire-client runtime only Used for invoking the xfire client to interface with the SOAP API.
GWT 1.4.60 gwt both Used for mounting the GWT-RPC endpoints.
BlazeDS 1.0-beta1 amf runtime only Mounting the AMF endpoints.