I'm a little lost here I think. On Wed, Nov 6, 2013 at 5:43 PM, Michael Berman <[email protected]> wrote: > As far as the provided question goes, it seems to me that the only reason > to mark a dep provided is if we think developers will *usually* want to > compile against different versions. Initially I thought it would make > sense if we thought the runtime versions would vary, but Chris makes a good > point that the deps we include in the distributed package can be selected > independently of the maven dep scope.
If I depend on Accumulo in my maven project, then I shouldn't need to depend on Hadoop unless the APIs I'm using leak that dependency or I have an explicit dependency on Hadoop elsewhere. > Since you can build accumulo against > any version of hadoop and it will still run against any other version of > hadoop, I think it's better to make things easier on us by having it > compile scoped. That's not strictly true. If you build against Hadoop1, I don't think you can run against Hadoop2, but I could be wrong. I do know that unless you're doing some reflection magic, you have to modify [In|Out]putFormats as the APIs moved some classes to interfaces and vice versa. > If someone depends on the accumulo server, then they may have to exclude > the transitive dependency if our hadoop is polluting theirs, but I think > that issue can be mitigated by not requiring client apps to depend on the > entire server. I could see the server artifact having Hadoop scoped compile, but I can't imagine that most users actually build against it. Or are we just taking about changing it for -server? -Joey > On Wed, Nov 6, 2013 at 5:17 PM, Joey Echeverria > <[email protected]>wrote: > >> Do Accumulo users need Hadoop or it's dependencies in order to use the >> client APIs? >> >> The only client API that I could see needing it would be the >> [In|Out]putFormats, but it'd be cool if that was a separate module and >> that module had the appropriate Hadoop dependencies with the compile >> scope. >> >> -Joey >> >> On Wed, Nov 6, 2013 at 5:05 PM, Christopher <[email protected]> wrote: >> > What's the latest opinion whether things should be marked "provided" in >> the pom? >> > I've changed my mind on this a few times, myself, so I'm curious what >> > others think. >> > >> > The provided scope means that it will not propagate as a transitive >> > dependency. Other than that, it doesn't do much... though we can >> > control packaging based on provided or not. >> > >> > I'm not sure this gets us much, and it's inconvenient for users. We >> > can control packaging in other ways (like being more explicit and >> > carefully considering which dependencies we include in an RPM or >> > tarball, for instance). >> > >> > If we drop its declaration, what this means, is that if users want to >> > build with Accumulo as a dependency, but against a different version >> > of Hadoop than what we declare in our POM, they'll have to explicitly >> > <exclude> the hadoop dependencies, and redeclare them, or they will >> > have to use their <dependencyManagement> section to force a particular >> > dependency of hadoop. >> > >> > The advantage to users, though, if we drop this, is that they won't >> > have to constantly re-declare transitive dependencies to get their >> > projects to build/test/run. >> > >> > See http://s.apache.org/maven-dependency-scopes >> > >> > Thoughts? >> > >> > -- >> > Christopher L Tubbs II >> > http://gravatar.com/ctubbsii >>
