# Development
This document will help to setup your development environment and running tests for milvus java sdk. If you encounter a problem, please file an issue.

## Getting started

### Prerequisites
    -   Java 8 or higher
    -   Apache Maven

### Clone the code

```shell
$ git clone --recursive git@github.com:milvus-io/milvus-sdk-java.git
```

Milvus proto files are managed by a submodule project under the directory: sdk-core/src/main/milvus-proto
Fetch Milvus proto files by the following command(If the previous clone is not with submodules)
```shell
$ git submodule update --init
```

If you are using Idea, go to Project Root in Idea, right click on `milvus-sdk-java` and select `Maven` -> `Reload Project`

Note: For now, current project do not support JDK 21+. The minimal Lombok version compatible with JDK 21 is 1.18.30.

## Building Milvus java SDK

Call the following command to generate protobuf related code
```shell
$  mvn install
```

## Update Milvus proto files
Milvus proto files are managed by a submodule project under the directory: sdk-core/src/main/milvus-proto
Before developing new interfaces, you need to get the latest proto files by the following command:
```shell
$ git submodule update --remote
```

## Building Milvus
See detailed information at:
https://github.com/milvus-io/milvus/blob/master/DEVELOPMENT.md

## Start a Milvus cluster
You need to start a latest milvus cluster to test the java SDK, see instructions at:
https://milvus.io/docs/v2.0.0/install_standalone-docker.md

### Unit Tests
All unit test is under director src/test

## GitHub Flow
Milvus SDK repo follows the same git work flow as milvus main repo, see
https://milvus.io/community/contributing_to_milvus.md

If you have any questions about how to fork, clone, create branch, commit, push, open a pull request,
please see https://github.com/firstcontributions/first-contributions