Seam Build System
------------------
This readme describes the build and dependency management system used to build
Seam, it's examples, and seam-gen. If you are looking for information on
building or configuring dependencies for a project which uses Seam, you should
look at the chapter on dependencies and building in the reference manual.
Eclipse Classpath
-----------------
If you want to generate an eclipse classpath based on the maven repository, run
ant eclipseclasspath in the root folder. To download sources for Seam's
dependencies to your local m2 repository, run ant downloadDependenciesSources;
the eclipseclasspath task automatically picks these up if they are available and
attaches them to library in eclipse.
Dependency Management
---------------------
The dependency managmement for Seam is managed through Maven pom files. The
pom's are located in the build/ directory. The root.pom.xml is the 'root' or
parent pom for Seam, and contains versioning information for all dependencies.
Each Seam jar has it's own pom (e.g. pdf.pom.xml) which declares the dependencies
for that module - it has the root pom declared as it's parent; no version
information is placed in this pom.
Seam directly uses the 'compile' dependencies to build the various modules,
and the test scope (for core) to run core tests.
To add or upgrade a dependency of Seam:
---------------------------------------
* Find the dependency in a maven repository - check repository.jboss.org/maven2
first and then try mvnsearch.com.
* Add or update the entry in root.pom.xml including version information
* If it's a new dependency, add an entry to the correct module. If it's an
optional dependency (most are), mark it true. If it's
provided by JBoss AS (current targeted version), mark it provided
* Bear in mind that a released Seam shouldn't depend on a SNAPSHOT version
* When we release Seam we have to add all it's dependencies to
repository.jboss.org (no thirdparty repositories should be used for released
versions) - so if you are adding a dependency which is stable, and you aren't
planning to change the dependency before the next release you should add it
straight to repository.jboss.org. To do this:
1) Checkout repository.jboss.org/maven2 from svn (https://svn.jboss.org/repos/repository.jboss.org)
2) Set the offline.repository.jboss.org property in build/build.properties to
the directory you checked out to.
3) Run ant -Dpom=foo.pom -Djar=foo.jar deployRelease
- if the new dependency also has a source and javadoc jar you can run:
- "ant -Dpom=foo.pom -Djar=foo.jar -Dsrcjar=foo-src.jar -Ddocjar=foo-doc.jar deployReleaseWithSourcesAndJavaDoc"
4) Check in the changed files to SVN (they'll be under a path of
artifactId/groupId/version)
To add a unreleased dependency of Seam:
-----------------------------------------
* If you need a dependency which isn't available in Maven, and don't want to add
it straight to repository.jboss.org or want to depend on a CVS/snapshot of a
project which you're planning to upgrade before the next Seam release you
can add it to snapshots.jboss.org.
* To add a jar to the local repository, you can, if you have a pom (that you
copied from an earlier version or have written) run:
ant deploySnapshot -Dpom=foo.pom -Djar=foo.jar
If you want maven to create a basic pom for you:
ant deploySnapshot -Djar=foo.jar
You will be prompted for your jboss.org username and pasword (WARNING your
password is echoed back to you!)
* If you need to alter the pom or jar in a repository but don't change
the version number, you should delete the old copy from maven's cache
rm -rf ~/.m2/repository/group/id/artifactId/version
Release Instructions
--------------------
All dependencies for a released version of Seam should be available in
repository.jboss.org. Only released versions of software should be present in
repository.jboss.org.
Release dependencies:
* Check that all dependencies of Seam are present in repository.jboss.org
- Check that snapshots.jboss.org is not active
- Check that no other maven repositorys are enabled
* Follow the proceedure outlined above to add jars to repository.jboss.org
Add Seam to repository.jboss.org:
* Checkout repository.jboss.org/maven2 from svn (https://svn.jboss.org/repos/repository.jboss.org)
* Set the offline.repository.jboss.org property in build/build.properties to the
directory you checked out to.
* Run ant releaseSeam
* Commit the release to repository.jboss.org
Examples
--------
The examples assemble all the Seam dependencies into a staging directory (/lib).
/lib/*.jar is used as the classpath to compile the examples, and the examples
use pattern's to select the jars to put in their deployed archives.
Some trickery (excluding jars) is required to get JBoss Embedded to run
currently - this should be improved.