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

BSF 3 is built with Apache Maven. 
Download and install Apache Maven 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'   

