GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - diffplug/goomph: IDE as build artifact

BranchesTags
Open more actions menu

Latest commit

 

History

1,023 Commits
1,023 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
gradle
gradle
 
 
images
images
 
 
src
src
 
 
.gitignore
.gitignore
 
 
CHANGES.md
CHANGES.md
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
HOW_TO_AUTOMATE_IDE.md
HOW_TO_AUTOMATE_IDE.md
 
 
LICENSE.txt
LICENSE.txt
 
 
PULL_REQUEST_TEMPLATE.md
PULL_REQUEST_TEMPLATE.md
 
 
README.md
README.md
 
 
build.gradle
build.gradle
 
 
gradle.properties
gradle.properties
 
 
gradlew
gradlew
 
 
gradlew.bat
gradlew.bat
 
 
settings.gradle
settings.gradle
 
 

Repository files navigation

Goomph: IDE as build artifact

Also plugins for working with SWT, OSGi, p2, and Eclipse RCP

Gradle plugin Maven artifact License Apache

Changelog Javadoc Live chat CircleCI

Blog posts

  • P2, Maven, and Gradle
  • Parting out eclipse
  • Gradle and Eclipse RCP (youtube talk 2016)

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 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:

  • DiffPlug
  • Veriluma
  • GenStar
  • WALA
  • (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.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.

  • Used to power the infrastructure above.

Other

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

IDE-as-build-artifact. (this part is mostly abandoned)

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.

Acknowledgements

  • Thanks to Jérémie Bresson for multiple fixes to the eclipseMavenCentral plugin.
  • Thanks to Thomas Broyer for the excellent net.ltgt.apt-eclipse plugin.
    • It is no longer maintained at its original home, so we will continue to maintain it here at com.diffplug.eclipse.apt.
  • Thanks to ralfgrossklaus for fixes to Gradle 6.7, CmdLine hanging, and opening dialogs on buildservers.
  • Thanks to Kelvin Glaß for adding the CategoryPublisher application (#126).
  • Thanks to hacki11 for slicingOptions and append in p2asmaven, as well as every improvement in the 3.10.0 release.
  • Andrey Hihlovskiy's excellent Wuff and Unpuzzle libraries have been a huge boon to everyone trying to get Gradle and Eclipse to collaborate.
  • Thanks to Peter Kriens for the excellent bnd.
  • Thanks to JRuyi and Agemo Cui for osgibnd-gradle-plugin, which inspired BndManifestPlugin.
  • Thanks to Scott Resnik for installed jre functionality, line number and whitespace configuration, and jdt config enhancements.
  • Thanks to Stefan Oehme for his feedback on Goomph's design.
  • Thanks to Neil Fraser of Google for diff-match-patch which is very helpful for testing.
  • Thanks to Thipor Kong for his handy windows cmdline length workaround for the classpath.
  • Formatted by spotless.
  • Bugs found by findbugs.
  • Built by gradle.
  • Tested by junit.
  • Maintained by DiffPlug.

About

IDE as build artifact

Topics

bndeclipsegradleideswt

Resources

Readme
Apache-2.0 license

Code of conduct

Code of conduct

Contributing

Contributing
Activity
Custom properties

Stars

137 stars

Watchers

5 watching

Forks

34 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.