I talked with Hans at DevNexus 2011 here in Atlanta this week (nice to see you again, Hans) and he mentioned that I might need to remind you guys about the key missing feature in the IDEA project generation plugin. Right now (OK, last I looked), this plugin assumes that every Gradle project will result in one and only one IDEA module (.iml file). This does not work for us. First, I'll explain why and then I'll give a more general argument for why I think this should change.
Our Problem: We have many Gradle projects with multiple source sets. IDEA handles main and test source sets just fine. But, we add a testFunctional source set for functional tests (or tests that take too long to run and we don't want to wait every time we build). This needs to be a separate IDEA module (we put them all in a "Functional Test" module group) in order to get dependencies handled correctly. Then, we have an api-main source set that is the interface APIs for other modules to use (in OSGi terms, the exported stuff). This needs to be a separate module in IDEA as well. Then we might also have an api-open source set for interface APIs that third-party developers are allowed to use to extend our product. So, one Gradle project might become 4 IDEA modules. But sometimes we have a Gradle project (one we call "legal" for instance) that has no source code, just legal documents and a Gradle build script that figures out with licenses go into which product distributions. This is a Gradle project that might not need an IDEA module at all. General Argument: The one-module-per-project thing in the plugin really feels frameworky. When that's what I want it's great, I don't need to say anything. When it's not what I need, I have to fight it. Instead, the plugin should give me tools to describe my needs and let me pick how to use them. This is the solution for frameworkitis. That's not to say convention is a bad thing, I think the plugin should assume a one-to-one mapping (it is the most common), but because it's designed as tools I can change that assumption. I should be able to remove any ideaModules, or add new ideaModules. The mantra should be: toolkits, not frameworks. Does all this make sense? Any hope of seeing it in a 1.0 milestone release? I know you guys were (are?) working on the IDEA and Eclipse project generation, so I decided to speak up again. -- John Murph Automated Logic Research Team
