samskivert / sbt-pom-util

SBT utility code that extracts metadata from POM files
Other
6 stars 0 forks source link

a pom-based module next to SBT ones #1

Open alexy opened 12 years ago

alexy commented 12 years ago

I have an umbrella SBT project with two Play 2.0 SBT-based modules, depending on on the other, and a pom-based common module written in Java. I'd like to have an umbrella SBT project to use ten-idea in and generate an IDEA project for all three with the sources properly linked. The single pom solution works fine in common. Multi-module SBT project docs say that they respect build.sbt files. But the common's one causes pom.xml not to be applied to that project's pom; I had to create an empty pom at the top level, then common's dependencies were not found; then I ended referring to the child's pom in your settings line on top, "common/pom.xml". The good thing is this is not touching the children which I still want to be separable SBT projects build able on their own. Yet the dependencies resulting are not showing common's dependencies properly in the IDEA project. What's the right setup here? Note that Play has its own plugin setting the application build on top, so I'd rather have a solution involving build.sbt files only...

samskivert commented 12 years ago

Wow, that sounds complicated. I think I need a diagram to properly understand what's going on.

I can say that sbt-pom-util generally assumes you'll express all of your project dependencies (both inter-module dependencies and external library dependencies) via the POM, not via SBT. That might be undesirable since it sounds like you want SBT to be the main thing. However, by expressing all of your dependencies via the POM, then IDEs have a much better chance of figuring out what in the heck is going on, because they tend to understand POMs, whereas they tend not to understand SBT build files (understandably, since a POM is a declarative format and build.sbt is basically a Turing complete language).

It may be possible to mix SBT dependencies and POM dependencies and make everything work out, but if you're doing that then you're signing up to know enough about SBT and how sbt-pom-util works to sort things out yourself. :)