## JBehave modules

JBehave provides the following modules, defined as POM artifacts:

Module | Versions
--- | ---
jbehave-core | lookup
jbehave-groovy | lookup
jbehave-scala | lookup
jbehave-guice | lookup
jbehave-needle | lookup
jbehave-pico | lookup
jbehave-spring | lookup
jbehave-weld | lookup
jbehave-odf | lookup
jbehave-google | lookup
jbehave-rest | lookup
jbehave-ant | lookup
jbehave-hudson-plugin | lookup
jbehave-jenkins-plugin | lookup
jbehave-maven-plugin | lookup
jbehave-distribution | lookup

Once a version has been chosen, each artifact will declare the dependencies required.

Not all the required dependencies are found in Maven Central. The settings.xml defines the repositories for those not found in Maven Central. If you are running in a corporate environment, you may be using a Maven Repository Manager, such as Nexus, which may proxy the repositories behind a public open-source group.

A POM artifact can be declared as dependency using different build systems:

### Apache Maven

Using Apache Maven, the dependencies are declared in the Maven pom.xml:

and the use of a custom settings.xml is declared via command line:

Maven dependencies are by default transitive, i.e. a top-level dependency will pull in all the dependencies it needs.

To override a version of a specific dependency in the dependency tree, the most effective way is to use the dependency management of the POM, e.g.:

Learn more about Maven dependency management from the Maven: The Complete Reference.

### Apache Ant

Using no dependency management tool, the build.xml in the lib directory of the binary distribution provides a target to copy to the lib directory all dependencies declared in the Maven pom.xm:

The Ant build.xml script uses the pom.xml to download and copy the dependencies (using the Maven Ant Tasks) as a one-off operation. Thereafter, Ant users can declare their dependencies from the lib directory and no further use of the pom.xml is required.

Using Maven Ant Tasks, the Ant dependency fileset can be created, with the Maven settings.xml provided specifying the remote repositories:

Use of Maven Ant Tasks requires the maven-ant-tasks.jar to be present in the $ANT_HOME/lib. A copy of the jar is provided in the lib directory of the binary distribution.

Using Ant Ivy:

The repositories in the Maven settings.xml need to be configured as resolvers in the Ivy settings.

### Groovy Grape

Using Groovy Grape:

Grape can also understand Ivy settings.