[hibernate-dev] [OGM] Neo4j integration dependencies

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


Splitting in 3 modules sounds good to me.

I was sure in past there was some opposition about having additional modules.

I might have imagined it

On Wed, Oct 19, 2016 at 10:59 AM, Sanne Grinovero <sanne at hibernate.org> wrote:
> On 19 October 2016 at 10:44, Yoann Rodiere <yoann at hibernate.org> wrote:
>> Is there any particular reason why we would not want to create three
>> artifacts, besides backward compatibility? It seems the obvious and ideal
>> solution, but I might be missing something.
>>
>> If there is common code, we can always create a fourth -neo4j-core artifact
>> that would have no interest to users but would simply ensure we don't
>> duplicate code, and would be delivered through transitive dependencies.
>>
>> About backward compatibility, I guess there are two options:
>>
>>    - If the last released version of the artifact used to contain only the
>>    embedded mode, we can use maven relocation
>>    - Otherwise, we can advertise this artifact as deprecated, remove almost
>>    everything in it and add the relevant new artifacts as dependencies.
>>
>> Or am I being too naive?
>
> Seems very reasonable. Maybe I'm naive too :)
>
> -- Sanne
>
>>
>> Yoann Rodière <yoann at hibernate.org>
>> Hibernate NoORM Team
>>
>> On 19 October 2016 at 11:17, Davide D'Alto <davide at hibernate.org> wrote:
>>
>>> 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
>>> cases.
>>>
>>> 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
>>> feasible.
>>>
>>> 4) ???
>>>
>>> Any opinion about this?
>>>
>>> Issue on JIRA: https://hibernate.atlassian.net/browse/OGM-1190
>>>
>>> Thanks,
>>> Davide
>>> _______________________________________________
>>> hibernate-dev mailing list
>>> hibernate-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>>
>> _______________________________________________
>> hibernate-dev mailing list
>> hibernate-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/hibernate-dev



More information about the hibernate-dev mailing list