Building BSF 3
--------------

BSF 3 is built with Apache Maven. Download and install Apache Maven 
(version 2.0.4 or newer) from: http://maven.apache.org/download.html.

To build BSF 3, in the top-level BSF 3 directory use the command 'mvn'.

This will automatically download any dependency jars from remote Maven 
repositories. Remote repositories may sometimes be unreliable, if you 
get intermittent repository errors just try running 'mvn' again.

Other useful Maven commands are:

'mvn clean install'
  - to remove old artifacts and rebuild from scratch

'mvn assembly:assembly'
  - to build the src and bin distros
This requires a previous Maven 'install' or 'package'

'mvn eclipse:eclipse'
 - to setup Eclipse projects for the BSF modules

'mvn deploy -Ptest-deploy -Prelease -Dgpg.skip [-DskipTests]'
- deploy artifacts to target/deploy; useful for checking that the contents are correct.

BSF requires a minimum of Java 1.4 to build

If you want to run Maven using a later version of Java 
(e.g. you want to run Maven 2.2.1 or later, which requires Java 1.5)
some profiles have been set up in the top-level pom.xml.

These profiles allow the compile and test operations to run
under a different version of Java. The profiles are:

java-1.4, java-1.5, java-1.6

For example:

'mvn test -Pjava-1.4' ! test using Java 1.4

These profiles require some properties or environment variables to be set up.
See the pom.xml for details on how to do this.

Note, currently there is a bug in the BSF 3 projects setup which causes
the Eclipse projects to be created badly for the test projects when
running 'mvn eclipse:eclipse' in the BSF top-level directory. A temporary
work around is to also run 'mvn eclipse:eclipse' within each test project
directory, eg, testing\javascript or testing\ruby.

Once dependency jars have been downloaded you can use '-o' to run 
Maven in offline mode which is faster, eg 'mvn -o'. 

Between BSF releases the BSF build may have dependencies based
on a SNAPSHOT release. If this is the case the -U parameter 
may sometimes be required to update to the latest SNAPSHOT 
build of that dependency, eg. 'mvn -U'   

