Also plugins for working with SWT, OSGi, p2, and Eclipse RCP
It turns out that the tooling required to implement "IDE-as-build-artifact" is the same tooling required to manipulate eclipse project files, and also to build Eclipse plugins and RCP applications in the first place. That is Goomph's other side. For an example project, see the Gradle and Eclipse RCP talk.
Real world Eclipse software built with Goomph:
Below is an index of Goomph's capabilities, along with links to the javadoc where you can find usage examples.
com.diffplug.eclipse
Eclipse project files and eclipse version-mapping maven central artifacts.apt
fixes eclipse project to work with Gradle annotation processing.mavencentral
makes it easy to add dependency jars from an eclipse release.buildproperties
uses build.properties
to control a gradle build, and fixes eclipse project classpath to include binary assets specified in build.properties
.excludebuildfolder
excludes the gradle build
folder from Eclipse's resource indexing.projectdeps
fixes an intermittent problem where dependencies on other projects within the workspace aren't always resolved correctly within Eclipse.resourcefilters
adds resource filters to the eclipse project.com.diffplug.osgi
Plugins for working with OSGi.bndmanifest
generates a manifest using purely bnd, and outputs it for IDE consumption.equinoxlaunch
can configure and run equinox applications as part of the build, such as a code generator.OsgiExecable
makes it easy to run a chunk of code within an OSGi container, and get the result from outside the container.com.diffplug.p2
A and plugins for manipulating p2 data. (mostly abandoned now)asmaven
downloads dependencies from a p2 repository and makes them available in a local maven repository.P2Model
models a set of p2 repositories and IUs, and provides convenience methods for running p2-director or the p2.mirror ant task against these.P2AntRunner
runs eclipse ant tasks.CategoryPublisher
models the CategoryPublisher eclipse application.FeaturesAndBundlesPublisher
models the FeaturesAndBundlesPublisher eclipse application.Repo2Runnable
models the Repo2Runnable eclipse application.com.diffplug.gradle.pde
Tasks for running Eclipse PDE using a downloaded eclipse instance. (this part is mostly abandoned now)PdeBuildTask
runs PDE build to build an RCP product.PdeAntBuildTask
runs PDE on an ant file.com.diffplug.gradle
Miscellaneous infrastructure.CmdLineTask
runs a series of shell commands, possibly copying or moving files in the meantime.JavaExecable
makes it easy to run a chunk of code in a separate JVM, and get the result back in this one.JavaExecWinFriendly
overcomes limitations in Windows' commandline length and long classpaths.com.diffplug.gradle.eclipserunner
Infrastructure for running headless eclipse applications.com.diffplug.configuration-cache-for-platform-specific-build
allows you to use OS.getNative()
and OS.getRunning()
in your gradle build without breaking the configuration cache.It is possible to have many installations of the Eclipse IDE share a common set of installed artifacts, called a "bundlepool". This means it is fast and efficient to get a purpose-built IDE for every project, preconfigured with all the plugins and settings appropriate for the project at hand.
When you run gradlew ide
, it builds and downloads an IDE into build/oomphIde
with just the features you need. Takes ~15 seconds and 1MB of disk space once all the common artifacts have been cached at ~/.goomph
.
apply plugin: 'com.diffplug.oomph.ide'
oomphIde {
repoEclipseLatest()
jdt {}
eclipseIni {
vmargs('-Xmx2g') // IDE can have up to 2 gigs of RAM
}
style {
classicTheme() // oldschool cool
niceText() // with nice fonts and visible whitespace
}
}
See the plugin's javadoc for a quickstart, and HOW_TO_AUTOMATE_IDE.md for examples and more in-depth details.
eclipseMavenCentral
plugin.net.ltgt.apt-eclipse
plugin.
com.diffplug.eclipse.apt
.CategoryPublisher
application (#126).3.10.0
release.BndManifestPlugin
.