To build with maven 2.x (http://maven.apache.org/):

  mvn install
  
The jars will be compiled and installed in your local Maven repository
  
To build with ant (http://ant.apache.org/):

  # run a basic build
  ant -f build/build.xml

  # run test tests
  ant -f build/build.xml test

  # perform a complete build, jars and javadocs will be copied to 'dist' folder
  ant -f build/build.xml dist
  
  # produce a distributable zip
  ant -f build/build.xml zip

  # clean
  ant -f build/build.xml clean

  # delete downloaded dependencies
  ant -f build/build.xml clean-downloads

Note: To build with XML Security support, set the ABDERA_XMLSECURITY environment
variable to "yes" prior to running the ant build.  To build with Spring support, 
set the ABDERA_SPRING environment variable to "yes" prior to running the build

To build with Eclipse (http://www.eclipse.org).  

There are two methods depending on whether or not you're comfortable with Maven

With Maven:
  Check out java/trunk, and from java/trunk run "mvn eclipse:eclipse".  Then
  import each project.  If you have the SVN checkout as a project in Maven, 
  you'll need an Eclipse 3.2 to import these projects without an error 
  regarding "overlapping projects'.  The alternative is to run
  "mvn -Declipse.workspace=/path/to/workspace eclipse:eclipse", which
  will set up a project where the source files are linked to the actual
  location.

  You'll also need to have a buid path variable for "M2_REPO" defined to match 
  your local repository (~/.m2/repository). You can do this manually, or by 
  running "mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo" 

Without Maven:
  From within eclipse, check out each of the following
  as projects.  Do not worry about the project type for now:
  
     * /java/trunk/build              project name: build
     * /java/trunk/core               project name: core
     * /java/trunk/dependencies       project name: dependencies
     * /java/trunk/docs               project name: docs
     * /java/trunk/examples           project name: examples
     * /java/trunk/parser             project name: parser
     * /java/trunk/server             project name: server
     * /java/trunk/security           project name: security
     * /java/trunk/spring             project name: spring
     * /java/trunk/extensions         project name: eclipse
  
    From the eclipse workspace root, invoke:
      ant -f build/build.xml init
  
    Then, from the eclipse workspace root, invoke
      ant -f snell_sandbox/eclipse/setupeclipse.xml
  
    This will copy all of the necessary eclipse project files over to
    the appropriate projects in the eclipse workspace.  Restart your
    eclipse workbench and all of your projects should be ready to go.
  
    Note: the security module will contain compile errors due to missing
    XML Security jars.  To build and use that module, you'll need to
    download the Apache XML Security and the Bouncy Castle Crypto
    implementation.


Releasing the Abdera artifacts
------------------------------

The release consists of the binary and source distributions along with the Maven artifacts. Those get deployed to a staging area so they can be voted on before going live.

Deploy the jars to a Maven staging repository:

mvn -DaltDeploymentRepository=apache.rsync::default::scp://people.apache.org/home/antelder/public_html/abdera/1.1-RC1/maven clean install gpg:sign deploy

Deploy the binary and source distribution archives:

cd distribution
mvn -DaltDeploymentRepository=apache.rsync::default::scp://people.apache.org/home/antelder/public_html/abdera/1.1-RC1 clean install gpg:sign deploy

(then copy the distribution archives and signatures from 1.1-RC1/org/apache/abdera/distribution to 1.1-RC1 and delete the org/ folder)




 
