[hibernate-dev] [OGM] Neo4j integration dependencies

Davide D'Alto davide at hibernate.org
Wed Oct 19 05:17:51 EDT 2016

The integration with Neo4j in OGM makes it possible for a user to
select the strategy that he wants to use to connect to an embedded or
remote Neo4j instance.
There are 3 possible options:
1) Embedded mode, Neo4j run in the same JVM
2) Remote via HTTP interface using RestEasy
3) Remote via the Bolt protocol using the neo4j-java-driver library

Everything is now in one single artifact meaning that for each case we
have more dependencies than needed, in particular for the remote

Possible solutions I can think of at the moment are:

1) Have different maven artifacts:
    - We could have 3 artifacts: EMBEDDED, HTTP and BOLT
    - or 2 artifacts: EMBEDDED and REMOTE: This won't completely solve
the issue because w would still have
      resteasy (for HTTP) and neo4j-java-driver (for BOLT) but it
might be a good trade-off

    We will need to share some resource so this approach might require
a Neo4j common library.

2) Make some dependencies optional (Need to test this, but it might work)

3) Use some maven plugin to generate different artifacts from the same
module. I haven't used this approach before so I'm not sure if it is

4) ???

Any opinion about this?

Issue on JIRA: https://hibernate.atlassian.net/browse/OGM-1190


More information about the hibernate-dev mailing list