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

Reply via email to