[ 
https://issues.apache.org/jira/browse/AVRO-647?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12913116#action_12913116
 ] 

Scott Carey commented on AVRO-647:
----------------------------------

More experimentation on the Avro front has brought out some interesting quirks 
in our dependencies.


1.  I'm not sure it makes sense to separate IDL and Specific from Core.   It 
turns out that the only extra library required as a runtime dependency for 
those two is commons-lang, and the _one_ class and method used there we could 
simply copy into our code to avoid the dependency.   Javacc is a build time 
only dependency that should not show up in our POM at all.   Paranamer-ant is 
the same.  Both have Maven plugins.  The upcoming templating version of 
SpecificCompiler might change what we want to do though.

2.  A LOT of our testing requires use of the Specific Compiler.  Most of the 
ipc package depends on output of the Specific Compiler to compile; 
Requestor/Responder are at the heart of that.  This would require that these be 
in a separate artifact.   The Maven artifacts would be 

avro-core (possibly with IDL)
avro-compile (optional, current version can be in core, template based one may 
require separation or shading)
avro-maven-plugin (Maven plugins for idl, specific compiler; depends on core 
and compile)
avro-ant  (the two classes for Ant tasks; depends on core, compile)
avro-ipc  (IPC  w/ netty/jetty; depends on core, compile, uses maven-plugin;  
most testing is not possible until here!)
avro-mapred (including tether, or that separate?)
avro-tools


That is a lot of stuff, but really only 4 libraries that others can depend on, 
two build tools, and one command-line tool. 
The part that is a bit of a problem is that most of our testing of core can't 
happen in the core project because of its dependencies on specific compiler 
output. 

> Break avro.jar into avro.jar, avro-dev.jar and avro-hadoop.jar
> --------------------------------------------------------------
>
>                 Key: AVRO-647
>                 URL: https://issues.apache.org/jira/browse/AVRO-647
>             Project: Avro
>          Issue Type: Improvement
>          Components: java
>            Reporter: Scott Carey
>            Assignee: Scott Carey
>
> Our dependencies are starting to get a little complicated on the Java side.
> I propose we build two (possibly more) jars related to our major dependencies 
> and functions.
> 1. avro.jar  (or perhaps avro-core.jar)
> This contains all of the core avro functionality for _using_ avro as a 
> library.  This excludes the specific compiler, avro idl, and other build-time 
> or development tools, as well as avro packages for third party integration 
> such as hadoop.  This jar should then have a minimal set of dependencies 
> (jackson, jetty, SLF4J ?).
> 2. avro-dev.jar
> This would contain compilers, idl, development tools, etc.  Most applications 
> will not need this, but build systems and developers will.
> 3. avro-hadoop.jar
> This would contain the hadoop API and possibly pig/hive/whatever related to 
> that.  This makes it easier for pig/hive/hadoop to consume avro-core without 
> circular dependencies. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to