Help

Built with Seam

You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.

The Weld build uses multi-module Maven projects. They follow two templates, which are described here.

All snapshots and releases are published to JBoss Maven Repository

Project templates

The standard template to use contains, in addition to the modules containing code, a BOM (Bill of Materials), a parent and an aggregator. A simpler template (merging the BOM, parent and the aggregator) is also used.

Standard template

The standard template is used when any other projects wants to import the artifacts which result from this project. In other words, when there are consumers of the project.

The standard template consists of a BOM. The primary purpose of the BOM is to define the versions of dependencies of the project, as well as any artifacts which may be consumed, produced by the project, as well as defining the repositories these dependencies can be obtained from (we are working to publish all artifacts to central). This BOM can be imported into another project, with no unintended side effects. It uses org.jboss.weld:weld-parent as it's parent, contains minimal project metadata, and SCM information to allow release to occur.

The parent POM uses the BOM as it's parent. It provides full metadata for the project (such as developers, CI information); it also provides dependency management for those dependencies which we don't wish to enforce on projects using our artifacts (mainly testing dependencies).

All other modules of the project use the parent POM as a parent. No other module should specify a version string for a dependency or a plugin except for testing purposes.

Finally, an aggregator POM exists in the root of the project. It's sole purpose is to allow easy building, and as such it contains minimal project metadata, SCM information and the modules to build. Typically it also configures the deploy plugin to skip deploying the module, and thus doesn't appear in any repository. It also configures the tagBase for the release plugin.

Simple template

The simple template can be used only when there are no consumers of the artifacts produced by the project. For example it is used by the examples. The BOM and parent are merged into the aggregator, and all projects use the aggregator (typically with id xxx-parent) as a parent.

Projects

Each of the projects that make up the Weld, Weld Extensions and CDI TCK are described below

Weld parent

The Weld parent, org.jboss.weld:weld-parent is the parent pom for all Weld, Weld Extension, Seam 3 and CDI TCK projects, and defines the build environment for these projects. As such it contains:

  • pluginRepositories
  • repositories - the Nexus JBoss snapshot repos
  • pluginManagement - controls versions and common settings for all Maven plugins used in the build
  • the release profile, which enables artifact signing with a key
  • distribtuionManagement - specifying the Nexus JBoss snapshot and staging repository to use for all projects

Furthermore it also enables the enforce and source plugin for the project, as well as providing minimal project metadata and the location of it's SCM for release purposes.

The Weld parent doesn't follow either template as it is a single module project.