Hi Mike,

Thanks for flushing this out.

My thoughts on the below:


-----Original Message-----
From: Michael Starch <starc...@umich.edu>
Reply-To: <dev@oodt.apache.org>
Date: Wednesday, November 5, 2014 at 12:12 PM
To: <dev@oodt.apache.org>
Subject: Re: Extra Compiler Tools

>I tried this approach. The plugin requires a path to the "protoc" tool and
>thus a working installation.  This is what prompted the discussion.

Ah - no worries, what you could do is:

1. only enable to plugin if -Pwith-mesos is enabled; and

>
>Running the plugin under a profile works.

Yep.

> However, not running the plugin
>causes compile errors in dependant code.  Excluding this code except
>within
>the profile doesn't seem to work, and is considered by some to be bad form
>because there is nothing inside the jar file that notes which profiles
>were
>used to compile.

Got it. Suggestion here would be:

2. create a new module, cas-resource-mesos, and inside of that module,
take one of the following approaches, assuming the module is activated
when -Pwith-mesos is enabled:

2a. Maven Antrun like so (in this old example):
http://stackoverflow.com/questions/1578456/integrate-protocol-buffers-into-
maven2-build

(pro: more flexibility in case protoc isn¹t there; to fail on error; to
only compile if 
protoc is available

2b. Maven protobuf plugin
http://sergei-ivanov.github.io/maven-protoc-plugin/usage.html

Here¹s how to enable a module with a profile:

http://blog.soebes.de/blog/2013/11/09/why-is-it-bad-to-activate-slash-deact
ive-modules-by-profiles-in-maven/


It seems like that is a bad idea though, based on that discussion.

So, here¹s another option:

1. Inside of cas-resource (no special new module or anything else)
2. include some custom Ant magic via a build.xml file and the Maven
AntRun plugin:
  2a. test if protoc is on the system path, and if not, download it, e.g.,
into the target directory (gets deleted on clean)
  2b. call protoc and compile after 2a

I would suggest this solution as I think it¹s the most robust and ensures
we always have a cas-resource that includes mesos and compiled correctly.

Cheers,
Chris

>
>Any ideas on how to continue?
>
>Michael
> On Nov 5, 2014 11:04 AM, "Chris Mattmann" <chris.mattm...@gmail.com>
>wrote:
>
>> Hi Mike,
>>
>> Great discussion. It would be nice if there was
>> a protoc Maven plugin:
>>
>> http://sergei-ivanov.github.io/maven-protoc-plugin/usage.html
>>
>>
>> Looks like there is. My suggestion:
>>
>> 1. use a Profile, something like -Pwith-mesos and
>> then when activated;
>> 2. call the above plugin if -Pwith-mesos is activated
>> in the resource manager
>>
>> Sound good?
>>
>> Cheers,
>> Chris
>>
>> ------------------------
>> Chris Mattmann
>> chris.mattm...@gmail.com
>>
>>
>>
>>
>> -----Original Message-----
>> From: Michael Starch <starc...@umich.edu>
>> Reply-To: <dev@oodt.apache.org>
>> Date: Wednesday, November 5, 2014 at 11:46 AM
>> To: <dev@oodt.apache.org>
>> Subject: Extra Compiler Tools
>>
>> >All,
>> >
>> >I am trying to integrate apache-mesos with our resource manager.
>>However,
>> >mesos uses a technology called "protobuff" from Google for
>> >marshaling/unmarshaling data.
>> >
>> >This requires running a tool called "protoc" to generate a source file
>>in
>> >java.  What is the best way to integrate this step into our build
>>process?
>> >
>> >Options I can conceive of:
>> >   -Check in generated java file
>> >   -Require "protoc" installation to build resource manager
>> >   -Separate extra resource package into new module
>> >
>> >None of these ideas are very clean.
>> >
>> >Any other ideas?  I tried setting up a profile to only compile these
>> >sources when selected, but that turned out not to work.
>> >
>> >-Michael Starch
>>
>>
>>


Reply via email to