[
https://issues.apache.org/jira/browse/BIGTOP-1269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14008278#comment-14008278
]
bhashit parikh edited comment on BIGTOP-1269 at 5/25/14 5:18 AM:
-----------------------------------------------------------------
I see what you are saying. However, we cannot have optional dependencies. To
have real optional dependencies the way you are suggesting, we would need to
mess with the source-sets to exclude/include certain packages/classes based on
parameters that are specified/omitted when running gradle commands. We can do
that, but if we go down that path, things will get too messy.
I am not talking about the optional dependencies of {{maven}}. Let me explain.
We can make sure that each kind of build (e.g. for {{pig}} profile) is built
with a specific version of dependencies. However, if we have any source-code
that depends on some external library (e.g. {{mahout}}), we can't leave out
that dependency entirely. The source won't compile unless the some version of
that dependency is at least specified. So, if we keep any source-code that
depends on {{mahout}}, we'll need a {{mahout}} dependency. The same goes for
{{hive}}. However, to get around this, and achieve what you are saying, we can
just specify the publicly available versions of {{mahout-core}} as a
dependency. This will allow any existing sources/tests to compile. These won't
work when running against {{hadoop 2.x}}, but since we don't want to run them
right now, we can just disable the integration-tests for {{mahout}} and
{{hive}} for now.
Although, based on what I understand, I think the real solution is to have each
module as a subproject or something. {{bigpetstore}} being the parent project
with all the common behavior and the a sub-project each for {{pig}}, {{hive}}
and others. Each sub-project gets included and excluded based on the parameters
that we provide, or through the {{settings.gradle}} file. This way, we can have
a clean separation of configurations. I am not sure whether this is what you
want. If we want to do this, I'll need to discuss a few more things with you
and think it through.
Does this make sense?
was (Author: bhashit):
I see what you are saying. However, we cannot have optional dependencies. I am
not talking about the optional dependencies of {{maven}}. Let me explain. We
can make sure that each kind of build (e.g. for {{pig}} profile) is built with
a specific version of dependencies. However, if we have any source-code that
depends on some external library (e.g. {{mahout}}), we can't leave out that
dependency entirely. The source won't compile unless the some version of that
dependency is at least specified. So, if we keep any source-code that depends
on {{mahout}}, we'll need a {{mahout}} dependency. The same goes for {{hive}}.
However, to get around this, and achieve what you are saying, we can just
specify the publicly available versions of {{mahout-core}} as a dependency.
This will allow any existing sources/tests to compile. These won't work when
running against {{hadoop 2.x}}, but since we don't want to run them right now,
we can just disable the integration-tests for {{mahout}} and {{hive}} for now.
Does this make sense?
> BigPetStore: Create build w/ gradle
> -----------------------------------
>
> Key: BIGTOP-1269
> URL: https://issues.apache.org/jira/browse/BIGTOP-1269
> Project: Bigtop
> Issue Type: Improvement
> Components: Blueprints
> Affects Versions: backlog
> Reporter: jay vyas
> Attachments: BIGTOP-1269.patch, BIGTOP-1269.patch
>
>
> Lets port the BigPetStore build to gradle for all the obvious reasons. This
> port might cause some minor breakage of other parallel efforts that change
> the pom file.
> The gradle ported build should contain:
> - a "test" phase which runs the custom data set generator
> - a "integration test - pig" phase which runs the pig data cleaner +
> aggrergator.
--
This message was sent by Atlassian JIRA
(v6.2#6252)