If you will be changing any Java code, then you'll want to build Java and run unit tests in your desktop environment using your favorite IDE. This document will help guide you through that process.
Install the JDK from oracle.com -- 8u20 or newer is best.
- Note: You should be able to use the OpenJDK interchangeably.
brew update
brew install thrift
As of this writing, these steps caused Thrift 0.9.3 to be installed.
- Note: Thrift 0.9.2 and 0.9.3 have issues with Python code generation. Thrift 0.9.1 is required if you want to build the Python code locally outside of devbox.
The version of Maven which is bundled with OS X is dated. Install an up-to-date version using Brew:
brew update
brew install maven
As of this writing, this workflow caused Maven 3.3.3 to be installed.
These instructions cover installation on Ubuntu 14.04 LTS. You will need to install these tools using the appropriate steps for your distro.
Install the JDK from oracle.com or, if you trust the webupd8team apt-get repository, install using apt-get:
sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update
sudo apt-get install oracle-java8-installer
To automatically set up the Java 8 environment variables:
sudo apt-get install oracle-java8-set-default
Install Thrift and its prerequisites using the instructions for your distro.
- Note: Thrift 0.9.2 and 0.9.3 have issues with Python code generation. Thrift 0.9.1 is required if you want to build the Python code locally outside of devbox.
- Note: Thrift 0.9.1 has a packaging bug which will cause
make
to fail on Ubuntu 14.04 unless "--without-tests" is specified at configuration time:./configure --without-tests
Install Maven and its prerequisites using the instructions or install using apt-get:
sudo apt-get install maven
As of this writing, this step caused Maven 3.0.5 to be installed.
Builds are done with Gradle. The gradle wrapper script in the root of the java
directory will take care of installing a version of Gradle -- 2.6, as of this writing -- and invoking it.
To clean, build, and run unit tests, run ./gradlew clean build
from the root of the Java directory. This will take on the order of half an hour on a newer MacBook Pro.
If a unit test fails, Gradle will produce a nice HTML output file describing the failures, which you can load in a browser.
To clean and build without running unit tests, run ./gradlew clean build -x test
from the root of the Java directory. This will take on the order of five minutes on a newer MacBook Pro.
To build and run tests for only one component, cd to the root directory for that component. So, for example, to build and run tests only for the housekeeper component, run ../gradlew clean build
from the housekeeper
subdirectory.
Gradle most likely has integration with your favorite IDE. You can browse the Gradle user guide to find out.
- Note: IDEs generally cannot run Gradle plugins such as the Thrift plugin, so it's best to do a full build through Gradle before attempting to open the project in your IDE. This will ensure that the generated Thrift code is present.
To edit source code in Eclipse, we recommend using Eclipse's built-in support for importing Gradle projects.
To generate an .ipr file which can be opened in IntelliJ, run ./gradlew cleanIdea idea
from the root of the Java directory.
Gradle doesn't honor the system proxy environment variables. Instead one has to write the proxy config into a gradle.properties file and place it into ~/.gradle/.
Example file:
systemProp.http.proxyHost=proxy.myorg.net
systemProp.http.proxyPort=1234
systemProp.http.nonProxyHosts=*.myorg.net|myorg.net|localhost
systemProp.https.proxyHost=proxy.myorg.net
systemProp.https.proxyPort=1234
systemProp.https.nonProxyHosts=*.myorg.net|myorg.net|localhost
systemProp.ftp.proxyHost=proxy.myorg.net
systemProp.ftp.proxyPort=1234
systemProp.ftp.nonProxyHosts=*.myorg.net|myorg.net|localhost