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