Dear all,
on Thursday I issued a PR [1] to introduce Uber Jars, i.e. single jars
which wrap our multitude of jars and some of the transitive
dependencies, but it was (rightly) pointed out that we should have a
little discussion here first.
Firstly, I'm using the maven shade plugin which repackages multiple jars
into one with:
- automatic transitive resolution
- the ability to include/exclude certain jars
- move classes if necessary to other packages to avoid conflicts
- rewrite the POM with the new dependencies.
Here is my global strategy:
- define a set of uber-jars (see below)
- include all non-optional dependencies in each uber-jar except for the
specification Jars (e.g. javax.transaction and javax.persistence)
- rename some internal-only dependencies to avoid conflicts
- uber jars MUST NOT inherit from infinispan-parent (too much cruft in
there) but only from infinispan-bom.
The Uber Jars
- infinispan-embedded-all (infinispan-commons, infinispan-core, jgroups,
jboss-marshalling-osgi, jboss-logging, infinispan-cachestore-jdbc,
infinispan-cachestore-jpa, infinispan-cachestore-leveldb)
- infinispan-remote-all (infinispan-commons, infinispan-client-hotrod,
commons-pool, jboss-marshalling-osgi, jboss-logging,
infinispan-remote-query-client, infinispan-query-dsl,
infinispan-protostream, protobuf-java)
- infinispan-query-all (infinispan-query, infinispan-query-dsl,
hibernate-hql-parser, antlr, stringtemplate, hibernate-hql-lucene,
hibernate-search-engine, infinispan-lucene-v4,
hibernate-search-analyzers, lucene*, solr*, avro, jackson-core,
jackson-mapper, paranamer, apache-compress, infinispan-lucene-directory,
hibernate-search-infinispan, hibernate-commons-annotations). This
package will depend on infinispan-embedded-all and we should only make a
Lucene v4 version).
Discuss :)
Tristan
[1]
https://github.com/infinispan/infinispan/pull/2589