MCPcopy Index your code
hub / github.com/diffplug/goomph

github.com/diffplug/goomph @v3.18.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.18.1 ↗ · + Follow
1,016 symbols 3,148 edges 133 files 519 documented · 51%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Goomph: IDE as build artifact

Maven artifact Latest version Javadoc License Apache

Changelog Travis CI Live chat

IDE-as-build-artifact.

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.gradle.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.

Blog posts

Building OSGi bundles, Eclipse plugins, and RCP applications.

It turns out that the tooling required to implement "IDE-as-build-artifact" is the same tooling required to build Eclipse plugins and RCP applications in the first place. That is Goomph's other side. For a canonical example which demonstrates Goomph in use on a real project, see the Gradle and Eclipse RCP talk.

Real world Eclipse software built with Goomph: - DiffPlug - Veriluma - GenStar - (your project here)

Below is an index of Goomph's capabilities, along with links to the javadoc where you can find usage examples.

com.diffplug.gradle.osgi Plugin for generating OSGi metadata.

  • bndmanifest generates a manifest using purely bnd, and outputs it for IDE consumption.
  • OsgiExecable makes it easy to run a chunk of code within an OSGi container, and get the result from outside the container.

com.diffplug.gradle.eclipse Plugins for handling eclipse' maven central artifacts and creating and manipulating eclipse project files.

  • 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.gradle.p2 Tasks and plugins for manipulating p2 data.

  • 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.
  • 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.

com.diffplug.gradle.swt Plugins for working with SWT in Gradle.

  • nativedeps adds the platform-specific SWT jars to the runtime classpath so that SWT code can run.

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.

  • Used to power the infrastructure above.
  • com.diffplug.gradle.equinoxlaunch can configure and run equinox applications as part of the build, such as a code generator.

Acknowledgements

Extension points exported contracts — how you extend this code

EclipseRunner (Interface)
Runs the given args using a headless eclipse instance. The major implementations are: - NativeRunner for runni [26 implementers]
src/main/java/com/diffplug/gradle/eclipserunner/EclipseRunner.java
JavaExecable (Interface)
Easy way to execute code from a Gradle plugin in a separate JVM. Create an class which implements `JavaExecable`. It s [4 …
src/main/java/com/diffplug/gradle/JavaExecable.java
OsgiExecable (Interface)
Runs code that lives outside an OSGi container inside of it. Works just like JavaExecable. Make sure the code [2 implementers]
src/main/java/com/diffplug/gradle/osgi/OsgiExecable.java
P2Declarative (Interface)
A declarative-style wrapper around a P2Model, appropriate for use as a DSL mixin. [2 implementers]
src/main/java/com/diffplug/gradle/p2/P2Declarative.java
ThrowingConsumer (Interface)
Consumer which can throw an exception.
src/main/java/com/diffplug/gradle/oomph/EclipseMisc.java

Core symbols most depended-on inside this repo

length
called by 203
src/main/java/com/diffplug/gradle/eclipserunner/EclipseIni.java
append
called by 78
src/main/java/com/diffplug/gradle/p2/P2Declarative.java
add
called by 70
src/main/java/com/diffplug/gradle/eclipserunner/launcher/Main.java
get
called by 64
src/main/java/com/diffplug/gradle/EnvMisc.java
replace
called by 52
src/main/java/com/diffplug/gradle/pde/PdeBuildProperties.java
addArg
called by 40
src/main/java/com/diffplug/gradle/eclipserunner/EclipseApp.java
equals
called by 39
src/main/java/com/diffplug/gradle/eclipserunner/EclipseIni.java
contains
called by 36
src/main/java/com/diffplug/gradle/eclipserunner/launcher/Main.java

Shape

Method 855
Class 151
Enum 5
Interface 5

Languages

Java100%

Modules by API surface

src/main/java/com/diffplug/gradle/eclipserunner/launcher/Main.java97 symbols
src/test/java/com/diffplug/gradle/diff_match_patch.java50 symbols
src/main/java/com/diffplug/gradle/oomph/OomphIdeExtension.java46 symbols
src/main/java/com/diffplug/gradle/p2/P2Model.java32 symbols
src/main/java/com/diffplug/gradle/FileMisc.java29 symbols
src/main/java/com/diffplug/gradle/eclipse/MavenCentralExtension.java28 symbols
src/main/java/com/diffplug/gradle/eclipse/ResourceFilter.java23 symbols
src/main/java/com/diffplug/gradle/eclipserunner/launcher/JNIBridge.java21 symbols
src/main/java/com/diffplug/gradle/eclipserunner/EclipseIni.java18 symbols
src/main/java/com/diffplug/gradle/CmdLine.java18 symbols
src/main/java/com/diffplug/gradle/eclipserunner/EclipseApp.java17 symbols
src/main/java/com/diffplug/gradle/pde/PdeInstallation.java16 symbols

For agents

$ claude mcp add goomph \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact