# Java client with minimal dependencies

**URL:** <https://discuss.elastic.co/t/java-client-with-minimal-dependencies/41445>\
**Category:** Elasticsearch\
**Created:** [February 11, 2016, 12:40am UTC](https://discuss.elastic.co/t/java-client-with-minimal-dependencies/41445 "2016-02-11T00:40:46Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Shawn\_Johnson](https://avatars.discourse-cdn.com/v4/letter/s/34f0e0/32.png) [@Shawn\_Johnson](https://discuss.elastic.co/u/Shawn_Johnson)\
**Post date:** [February 11, 2016, 12:40am UTC](https://discuss.elastic.co/t/java-client-with-minimal-dependencies/41445/1 "2016-02-11T00:40:46Z")

</div>

I'm using Ivy for dependency management (yep, I'm the one) instead of Maven. I just want to see if I can trim my dependencies at all for a simple Node Client?

Namely the whole Ivy config to Maven scope thing is a bit confusing. From what I can see the only scope defined in the [pom](http://central.maven.org/maven2/org/elasticsearch/elasticsearch/2.1.1/elasticsearch-2.1.1.pom) is "test". I think that means that the remaining dependencies get the default scope of 'compile'.

I realize this hasn't happened yet...

> and possibly even creating a thin Java client for Elasticsearch with minimal dependencies  
> ref: [To shade or not to shade | Elastic Blog](https://www.elastic.co/blog/to-shade-or-not-to-shade)

ivy.xml  
`<dependency org="org.elasticsearch" name="elasticsearch" rev="2.2"/>`

Retrieved libraries:

1. lucene-core-5.3.1.jar
2. lucene-backward-codecs-5.3.1.jar
3. lucene-analyzers-common-5.3.1.jar
4. lucene-queries-5.3.1.jar
5. lucene-memory-5.3.1.jar
6. lucene-highlighter-5.3.1.jar
7. lucene-join-5.3.1.jar
8. lucene-grouping-5.3.1.jar
9. lucene-queryparser-5.3.1.jar
10. lucene-sandbox-5.3.1.jar
11. lucene-suggest-5.3.1.jar
12. lucene-misc-5.3.1.jar
13. lucene-spatial-5.3.1.jar
14. lucene-spatial3d-5.3.1.jar
15. spatial4j-0.5.jar
16. guava-18.0.jar
17. hppc-0.7.1.jar
18. joda-time-2.8.2.jar
19. joda-convert-1.2.jar
20. jackson-core-2.6.2.jar
21. jackson-dataformat-smile-2.6.2.jar
22. jackson-dataformat-yaml-2.6.2.jar
23. snakeyaml-1.15.jar
24. jackson-dataformat-cbor-2.6.2.jar
25. netty-3.10.5.Final.jar
26. compress-lzf-1.0.2.jar
27. t-digest-3.0.jar
28. HdrHistogram-2.1.6.jar
29. commons-cli-1.3.1.jar
30. jsr166e-1.1.0.jar

Thought it couldn't hurt to ask, in case I missed a post or other document, maybe mentioning certain dependencies that could be excluded?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [February 11, 2016, 6:28am UTC](https://discuss.elastic.co/t/java-client-with-minimal-dependencies/41445/2 "2016-02-11T06:28:48Z")

</div>

I think you need almost everything for the Node Client.

For a TransportClient you might need less deps such as guava or joda but I never tested that so I'm unsure.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 5, 2017, 11:17pm UTC](https://discuss.elastic.co/t/java-client-with-minimal-dependencies/41445/3 "2017-07-05T23:17:20Z")

</div>


