hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jesse Yates (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-4336) Convert source tree into maven modules
Date Fri, 13 Apr 2012 22:39:17 GMT

    [ 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


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
> 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
> * 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


View raw message