We recommend using a Unix-based environment for development, such as Linux or macOS. If you're on Windows, we recommend using WSL2.
Fork the Venice repo at https://github.com/linkedin/venice.
git clone git@github.com:${githubUsername}/venice.git
cd venice
git remote add upstream git@github.com:linkedin/venice.git
git fetch upstreamWe use Java 17 for development. You can download it here.
Make sure to set the JAVA_HOME environment variable to the location of your JDK installation. How to do this will be
dependent on your OS.
We recommend using IntelliJ IDEA for development to take advantage of the debugger, and provide instructions for it. However, any IDE of your choice should work.
To set up IntelliJ, run:
./gradlew idea- In IntelliJ, click the gear icon in the top right and select settings
- Go to Editor -> Code Style -> Java and select Imports from the tabs
- Next to Scheme, select the gear icon and hit duplicate
- Only check
Use single class import - Set
Class count to use import with *to 1000 - Set
Names count to use static import with *to 1000
There are many resources on the web for updating the limits of maximum number of open files for each operating system.
We recommend setting a soft limit of at least 64000 and a hard limit of at least 524288. Feel free to experiment
with various values and find ones that work for you.
./gradlew clean assemble./gradlew check --continue# Build project classes and artifacts
./gradlew assemble
# Run all checks (spotbugs, code coverage, tests etc)
./gradlew check --continue
# Run only enabled checks that may fail the build
./gradlew spotbugs
# Run all checks, including ones that are in review/incubating stage, and do not fail the build
./gradlew spotbugs -Pspotallbugs -Pspotbugs.ignoreFailures
# Run jacoco code coverage check, which will also generate jacoco report
./gradlew jacocoTestCoverageVerification
# Run jacoco code coverage check along with jacoco report and diff coverage check
./gradlew jacocoTestCoverageVerification diffCoverage --continue
# Run enabled checks only for main code and in da-vinci-client subproject
./gradlew :clients:da-vinci-client:spotbugsMain
# Run jacoco code coverage check for a specific module along with jacoco report
./gradlew :clients:da-vinci-client:jacocoTestCoverageVerification
# Run jacoco code coverage check for a specific module along with jacoco report and diff coverage check
./gradlew :clients:da-vinci-client:jacocoTestCoverageVerification diffCoverage
# Run a specific test in any module
./gradlew :sub-module:testType --tests "fully.qualified.name.of.the.test"
# To run a specific integration test
./gradlew :internal:venice-test-common:integrationTest --tests "fully.qualified.name.of.the.test"