2021-08-01 14:27:44 -07:00
# Build the code & run tests
## Prerequisites
2021-11-24 04:02:42 +00:00
* Make sure you are using maven 3.5.x or higher and JDK 11 or higher.
* Make sure you have a local instance of MySQL and ElasticSearch.
2021-10-22 19:35:12 -07:00
* For an easy install of MySQL and ES, just install Docker on your local machine and run the following commands from the top-level directory
2021-11-24 04:02:42 +00:00
2021-10-22 19:35:12 -07:00
```
cd docker/local-metadata
docker-compose -f docker-compose-dev.yml up
```
2021-11-24 04:02:42 +00:00
* Bootstrap MySQL with tables
1. Create a distribution as explained [here ](build-code-run-tests.md#create-a-distribution-packaging )
2021-10-22 19:35:12 -07:00
2. Extract the distribution tar.gz file and run the following command
2021-11-24 04:02:42 +00:00
2021-10-22 19:35:12 -07:00
```
cd open-metadata-< version > /bootstrap
2021-12-07 18:43:49 +00:00
sh bootstrap_storage.sh drop-create-all
2021-10-22 19:35:12 -07:00
```
2021-11-24 04:02:42 +00:00
* Bootstrap ES with indexes and load sample data into MySQL
2021-11-24 04:24:26 +00:00
1. Run OpenMetadata service instances through IntelliJ IDEA following the instructions [here ](build-code-run-tests.md#run-instance-through-intellij-idea )
2021-10-22 19:35:12 -07:00
2. Once the logs indicate that the instance is up, run the following commands from the top-level directory
2021-11-24 04:02:42 +00:00
2021-10-22 19:35:12 -07:00
```
python3 -m venv /tmp/venv
source /tmp/venv/bin/activate
pip install -r ingestion/requirements.txt
2021-11-24 04:02:42 +00:00
make install_dev generate
2021-10-22 19:35:12 -07:00
cd ingestion
2021-11-24 04:24:26 +00:00
pip install -e '.[sample-data, elasticsearch]'
2021-10-22 19:35:12 -07:00
metadata ingest -c ./pipelines/sample_data.json
2021-11-24 04:02:42 +00:00
metadata ingest -c ./pipelines/sample_usage.json
2021-10-22 19:35:12 -07:00
metadata ingest -c ./pipelines/metadata_to_es.json
```
2021-11-24 04:02:42 +00:00
* You are now ready to explore the app by going to http://localhost:8585 \*If the web page doesn't work as intended, please take a look at the troubleshooting steps [here ](build-code-run-tests.md#troubleshooting )
2021-08-01 14:27:44 -07:00
## Building
The following commands must be run from the top-level directory.
`mvn clean install`
2021-11-29 21:15:30 +00:00
If you wish to skip the unit tests you can do this by adding `-DskipTests` to the command line.
2021-08-01 14:27:44 -07:00
2021-10-15 03:51:13 +05:30
## Create a distribution (packaging)
2021-08-01 14:27:44 -07:00
You can create a _distribution_ as follows.
2021-10-15 03:51:13 +05:30
```
2021-08-01 14:27:44 -07:00
$ mvn clean install
```
The binaries will be created at:
2021-10-15 03:51:13 +05:30
```
2021-12-07 18:43:49 +00:00
openmetadata-dist/target/open-metadata-< version > .pom
openmetadata-dist/target/open-metadata-< version > .tar.gz
2021-08-01 14:27:44 -07:00
```
2021-08-12 17:45:27 +00:00
## Run instance through IntelliJ IDEA
2021-08-01 14:27:44 -07:00
2021-08-18 07:27:45 +00:00
Add a new Run/Debug configuration like the below screenshot.
2021-08-01 14:27:44 -07:00
2021-11-29 21:23:34 +00:00
1. Click on Intellij - Run menu
2. Click on "Edit Configurations"
3. Click + sign and Select Application and make sure your config looks similar to the below image

2021-08-01 14:27:44 -07:00
2021-08-18 07:27:45 +00:00
## Add missing dependency
Right-click on catalog-rest-service
2021-11-13 23:03:20 +05:30

2021-08-18 07:27:45 +00:00
Click on "Open Module Settings"
2021-11-13 23:03:20 +05:30

2021-08-18 07:27:45 +00:00
Go to "Dependencies"
2021-11-13 23:03:20 +05:30

2021-08-18 07:27:45 +00:00
Click “+” at the bottom of the dialog box and click "Add"
2021-11-13 23:03:20 +05:30

2021-08-18 07:27:45 +00:00
Click on Library
2021-11-13 23:03:20 +05:30

2021-08-18 07:27:45 +00:00
In that list look for "jersey-client:2.25.1"
2021-11-13 23:03:20 +05:30

2021-08-18 07:27:45 +00:00
Select it and click "OK". Now run/debug the application.
2021-10-22 19:35:12 -07:00
## Troubleshooting
2021-11-24 04:02:42 +00:00
* If you see blank page at http://localhost:8585 , please check the logs at `logs/openmetadata.log` . You might be encountering one of the following errors:
* `connection refused` or `unreachable` - please confirm that MySQL and ES are reachable outside of docker by running `docker ps` and checking that ports 3306 and 9200 are listening on 0.0.0.0
* If ElasticSearch in Docker on Mac is crashing, try changing Preferences -> Resources -> Memory to 4GB
* If ElasticSearch logs show `high disk watermark [90%] exceeded` , try changing Preferences -> Resources -> Disk Image Size to at least 16GB
* `Public Key Retrieval is not allowed` - verify that the JDBC connect URL in `conf/openmetadata.yaml` is configured with the parameter `allowPublicKeyRetrieval=true`
* Browser console shows javascript errors, try doing a [clean build ](build-code-run-tests.md#building ). Some npm packages may not have been built properly.
2021-10-22 19:35:12 -07:00
2021-08-01 14:27:44 -07:00
## Coding Style
2021-10-15 03:51:13 +05:30
1. [Refer to coding guidelines ](coding-style.md )
2. Configure IntelliJ to disable the \[wild-card imports]
2021-08-01 14:27:44 -07:00
2021-10-15 03:51:13 +05:30
([https://www.jetbrains.com/help/idea/creating-and-optimizing-imports.html#disable-wildcard-imports ](https://www.jetbrains.com/help/idea/creating-and-optimizing-imports.html#disable-wildcard-imports ))