This repo contains the source for the MultiBit Commons library.
From a technical point of view this project uses
- Java - Primary language of the app
- Maven - Build system
- Guava - Excellent support libraries for Java
We follow the "Git Flow" branching strategy.
This means that the latest release is on the "master" branch (the default) and the latest release candidate is on the "develop" branch. Any issues are addressed in feature branches from "develop" and merged in as required.
Most IDEs (such as Intellij Community Edition) come with support for Maven built in, but if not then you may need to install it manually.
IDEs such as Eclipse may require the m2eclipse plugin to be configured.
To quickly check that you have Maven 3+ installed check on the command line:
mvn --version
A quick way to install Maven on Mac is to use HomeBrew.
At present it is necessary to checkout multibit-hd and
build it manually. You will need to use the HEAD of the develop
branch.
mvn clean install
Later this will be available in a host repository (such as Maven Central) which will simplify the build process.
The general criteria for adding a class are as follows:
- it must assist MultiBit operations directly
- it must be shared by 2 or more projects
- inclusion would simplify a project (e.g. remove need for external library etc)
- it should not break/force refactoring of existing commons entries (downstream should safely update)
Generally classes are marked as candidates for inclusion by being moved into an org.multibit.commons.xyz
package within
the consuming project (e.g. MultiBit HD or BritService). At the moment when a duplicate is required then they should be shared
through the MultiBit Commons.
The release cycle for MultiBit Commons should be fast. We want to avoid develop-SNAPSHOT
dependencies on the commons
wherever possible.
Downstream projects should upgrade when it suits them and not be forced to through