The main reasons I see for keeping separate modules:

a) Version independence - A moves at a different pace than B, say B
v2.0 break things for users of B v.1.3 - while A v1.4 users should not
care.
b) Dependency requirements - A requires significantly different set of
dependencies than B - e.g. pulls in the OWLAPI
c) Separation of concern - A is the API, B is the implementation.
Almost nobody should use B directly.
d) Avoiding spaghetti - B depends on A and C, C depends on A


FYI, here's the dependency graphs:

jena-core

[INFO] org.apache.jena:jena-core:jar:2.12.2-SNAPSHOT
[INFO] +- junit:junit:jar:4.11:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- org.slf4j:slf4j-api:jar:1.7.6:compile
[INFO] +- org.apache.jena:jena-iri:jar:1.1.2-SNAPSHOT:compile
[INFO] +- xerces:xercesImpl:jar:2.11.0:compile
[INFO] |  \- xml-apis:xml-apis:jar:1.4.01:compile
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.7.6:compile
[INFO] \- log4j:log4j:jar:1.2.17:compile


[INFO] org.apache.jena:jena-arq:jar:2.12.2-SNAPSHOT
[INFO] +- org.apache.jena:jena-core:jar:2.12.2-SNAPSHOT:compile
[INFO] |  +- org.apache.jena:jena-iri:jar:1.1.2-SNAPSHOT:compile
[INFO] |  \- xerces:xercesImpl:jar:2.11.0:compile
[INFO] |     \- xml-apis:xml-apis:jar:1.4.01:compile
[INFO] +- org.apache.jena:jena-core:jar:tests:2.12.2-SNAPSHOT:test
[INFO] +- org.apache.httpcomponents:httpclient:jar:4.2.6:compile
[INFO] |  +- org.apache.httpcomponents:httpcore:jar:4.2.5:compile
[INFO] |  \- commons-codec:commons-codec:jar:1.6:compile
[INFO] +- com.github.jsonld-java:jsonld-java:jar:0.5.0:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-core:jar:2.3.3:compile
[INFO] |  \- com.fasterxml.jackson.core:jackson-databind:jar:2.3.3:compile
[INFO] |     \- com.fasterxml.jackson.core:jackson-annotations:jar:2.3.0:compile
[INFO] +- org.apache.httpcomponents:httpclient-cache:jar:4.2.6:compile
[INFO] +- org.apache.thrift:libthrift:jar:0.9.1:compile
[INFO] |  \- org.apache.commons:commons-lang3:jar:3.1:compile
[INFO] +- org.slf4j:jcl-over-slf4j:jar:1.7.6:compile
[INFO] +- org.apache.commons:commons-csv:jar:1.0:compile
[INFO] +- junit:junit:jar:4.11:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- org.slf4j:slf4j-api:jar:1.7.6:compile
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.7.6:compile
[INFO] \- log4j:log4j:jar:1.2.17:compile

jena-iri

[INFO] org.apache.jena:jena-iri:jar:1.1.2-SNAPSHOT
[INFO] +- junit:junit:jar:4.11:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- org.slf4j:slf4j-api:jar:1.7.6:compile
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.7.6:compile
[INFO] \- log4j:log4j:jar:1.2.17:compile



jena-arq seems to pull in quite a fair bit more than jena-core..

On 5 November 2014 12:13, Andy Seaborne <a...@apache.org> wrote:
> What I (still) don't understand is the use case for separate bundles per
> separate jena module. (not that I'm an OSGi user ATM)
>
> The contract around a Jena release is that the whole thing works together.
> There aren't independent releases of ARQ and core, say. It has been done as
> independent jars a while ago but the net result was just version confusion.
> That's also why they have the same version numbers nowadays.  The separation
> of modules is "internal" rathe rthan an external contract.
>
> And yet people still manage to create mixed up combinations of jars so I
> wonder if the main jar ought not to be one combined jena jar (c.f.
> apache-jena-libs except that's a POM). Keep the dependencies separate.
>
> Is there a real need for separate jena-* nowadays?  Or is it just a source
> of confusion and mistakes?
>
>         Andy
>
>
>
> On 04/11/14 10:54, Reto Gmür wrote:
>>
>> Hi
>>
>> In the clerezza project we have been wrapping jena for a while as OSGi
>> bundles.
>>
>> Recently it got split up into different bundles. The source (i.e. the
>> poms)
>> can be seen here:
>>
>> https://github.com/apache/clerezza/tree/master/ext
>>
>> Cheers,
>> Reto
>>
>> On Sat, Nov 1, 2014 at 2:26 AM, Stian Soiland-Reyes <
>> soiland-re...@cs.manchester.ac.uk> wrote:
>>
>>> I would like to hear from your experience of a custom-wrapped bundle
>>> what you decided to include or not.
>>>
>>> See my other email message in this thread..
>>>
>>> Basically in short:
>>>
>>>
>>>
>>> http://build.mygrid.org.uk/ci/job/jena-bundle/21/org.apache.jena$jena-osgi/
>>>
>>>
>>>
>>> http://repository.mygrid.org.uk/artifactory/ext-snapshot-local/org/apache/jena/jena-osgi/2.12.2-SNAPSHOT/
>>>
>>>
>>> http://repository.mygrid.org.uk/artifactory/ext-snapshot-local/org/apache/jena/jena-parent/12-SNAPSHOT/
>>>
>>>
>>>
>



-- 
Stian Soiland-Reyes, myGrid team
School of Computer Science
The University of Manchester
http://soiland-reyes.com/stian/work/ http://orcid.org/0000-0001-9842-9718

Reply via email to