Abstract base plugin which takes care of the common stuff usually needed by maven IDE plugins. A plugin extending
AbstractIdeSupportMojo should implement the setup() and writeConfiguration() methods, plus
the getters needed to get the various configuration flags and required components. The lifecycle:

*** calls setup() where you can configure your specific stuff and stop the mojo from execute if appropriate ***
- manually resolve project dependencies, NOT failing if a dependency is missing
- compute project references (reactor projects) if the getUseProjectReferences() flag is set
- download sources/javadocs if the getDownloadSources() flag is set
*** calls writeConfiguration(), passing the list of resolved referenced dependencies ***
- report the list of missing sources or just tell how to turn this feature on if the flag was disabled

downloadSources

Enables/disables the downloading of source attachments. Defaults to false. When this flag is true
remote repositories are checked for sources: in order to avoid repeated check for unavailable source archives, a
status cache is mantained. With versions 2.6+ of the plugin to reset this cache run
mvn eclipse:remove-cache, or use the forceRecheck option with versions. With older
versions delete the file mvn-eclipse-cache.properties in the target directory.

downloadJavadocs

Enables/disables the downloading of javadoc attachments. Defaults to false. When this flag is true
remote repositories are checked for javadocs: in order to avoid repeated check for unavailable javadoc archives,
a status cache is mantained. With versions 2.6+ of the plugin to reset this cache run
mvn eclipse:remove-cache, or use the forceRecheck option with versions. With older
versions delete the file mvn-eclipse-cache.properties in the target directory.

forceRecheck

Enables/disables the rechecking of the remote repository for downloading source/javadoc attachments. Defaults to
false. When this flag is true and the source or javadoc attachment has a status cache to indicate
that it is not available, then the remote repository will be rechecked for a source or javadoc attachment and the
status cache updated to reflect the new state.

doDependencyResolution

Resolve project dependencies. Manual resolution is needed in order to avoid resolution of multiproject artifacts
(if projects will be linked each other an installed jar is not needed) and to avoid a failure when a jar is
missing.