[ 
https://issues.apache.org/jira/browse/HBASE-4336?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13253825#comment-13253825
 ] 

Jesse Yates commented on HBASE-4336:
------------------------------------

bq. its fine except for the case where tests depend on the product of an 
earlier module

Right. 

For example, the security module wants to use the minicluster which is 
published via the test jar in core. By the maven spec, it should only require 
that the core-test jar at test compile time. And since the core-test jar is a 
dependency, it should build core-test jar and then the security branch should 
get access to that jar. That's the way it should be :)

However, the way it works is that if you just do 'mvn compile' the security 
module (for some reason) attempts to resolve the test-jar (even though it is 
scoped to the test phase, which comes _after_ the compile phase), which of 
course breaks because the core module hasn't had a chance to build it yet. 

This is mitigated if you do 'mvn package' as maven is smart enough to see the 
full dependency tree, find that security needs the core-test jar, compile and 
build all of core and, only when that is complete, build the security stuff, 
making that core-test jar available to the security module to compile with. 
However, its ridiculous to not be able to do 'mvn compile' or 'mvn test' on the 
project, but instead having to run a full package just to test things out.
                
> Convert source tree into maven modules
> --------------------------------------
>
>                 Key: HBASE-4336
>                 URL: https://issues.apache.org/jira/browse/HBASE-4336
>             Project: HBase
>          Issue Type: Task
>          Components: build
>            Reporter: Gary Helmling
>            Priority: Critical
>             Fix For: 0.96.0
>
>
> When we originally converted the build to maven we had a single "core" module 
> defined, but later reverted this to a module-less build for the sake of 
> simplicity.
> It now looks like it's time to re-address this, as we have an actual need for 
> modules to:
> * provide a trimmed down "client" library that applications can make use of
> * more cleanly support building against different versions of Hadoop, in 
> place of some of the reflection machinations currently required
> * incorporate the secure RPC engine that depends on some secure Hadoop classes
> I propose we start simply by refactoring into two initial modules:
> * core - common classes and utilities, and client-side code and interfaces
> * server - master and region server implementations and supporting code
> This would also lay the groundwork for incorporating the HBase security 
> features that have been developed.  Once the module structure is in place, 
> security-related features could then be incorporated into a third module -- 
> "security" -- after normal review and approval.  The security module could 
> then depend on secure Hadoop, without modifying the dependencies of the rest 
> of the HBase code.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to