## Maven Goals

JBehave supports accessing the Embedder functionality via Maven goals:

- map-stories-as-embeddables
- map-stories-as-paths
- run-stories-as-embeddables
- run-stories-as-paths
- run-stories-with-annotated-embedder
- report-stepdocs
- report-stepdocs-as-embeddables
- generate-stories-view
- unpack-view-resources

Maven goals support the following properties:

- sourceDirectory: defaults to src/main/java
- testSourceDirectory: defaults to src/test/java
- outputDirectory: defaults to target/classes
- testOutputDirectory: defaults to target/test-classes
- scope: [compile|test], defaults to compile
- includes: list of include patterns
- excludes: list of exclude patterns
- metaFilters: list of meta filters
- systemProperties: list of system properties to set during execution
- batch: [true|false], defaults to false
- skip: [true|false], defaults to false
- ignoreFailureInStories: [true|false], defaults to false
- ignoreFailureInView: [true|false], defaults to false
- generateViewAfterStories: [true|false], defaults to true
- storyTimeoutInSecs: defaults to 300
- storyTimeoutInSecsByPath: defaults to 300 (the default of storyTimeoutInSecs)

- Overrides the default value in storyTimeoutInSecs, and can be expressed as a CSV of regex
  expressions matching story paths. E.g. "*/long/.story:5000,*/short/.story:200,*/medium/m_story.story:1000"

- failOnStoryTimeout: [true|false], defaults to false
- threads: defaults to 1
- embedderClass: defaults to Embedder.
- injectableEmbedderClass: defaults to `null`
- storyFinderClass: defaults to StoryFinder

Performance Testing: You can make use of storyTimeoutInSecs and storyTimeoutInSecsByPath to ensure tests run under the time(s) specified

In addition, the unpack-view-resources goal supports the properties:

- resourceArtifactIds: list of resource artifactIds, optional (defaults to {"jbehave-site-resources", "jbehave-core"})
- resourceTypes: list of resource types, optional (defaults to {"zip"})
- resourceIncludes: the pattern of includes when unpacking each resource, optional (defaults to includes all)
- resourceExcludes: the pattern of excludes when unpacking each resource, optional (defaults to excludes none)
- viewDirectory: the output directory of the resources, optional (defaults to the one configured in the Embedder StoryReporterBuilder)

An example of a typical Maven plugin usage is:

The default scope is compile, which means that the stories will be looked up in the POM source directory. If the scope is set to test the stories will be looked up in the POM test source directory.

## ClassLoading Logging Frameworks

JBehave uses FreeMarker to generate template-based reports. FreeMarker uses its own version of a logging facade framework which auto-discovers different logging frameworks, notably JDK Logging and Apache log4j. When using the JBehave Maven Plugin, and depending on the rest of your POM configuration, you may need to add Apache log4j as Plugin Dependency (as opposed to the Project Dependency) if you find that it's not able to load its classes, e.g.:

## ClassLoading Groovy Meta Matcher

When using the JBehave Maven Plugin with a Groovy Meta Matcher you need to configure Groovy as Plugin Dependency (as opposed to the Project Dependency):