• Stars
    star
    125
  • Rank 286,335 (Top 6 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created about 9 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

IDE as build artifact

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

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:

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)

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

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

More Repositories

1

spotless

Keep your code spotless
Java
3,791
star
2

durian

Guava's spikier (unofficial) cousin
Java
271
star
3

matfilerw

Read and write MATLAB MAT-files from Java, forked from JMatIO
Java
55
star
4

selfie

Snapshot testing for Java, Kotlin, and the JVM
Kotlin
47
star
5

matconsolectl

Control MATLAB from Java, forked from matlabcontrol
Java
45
star
6

gradle-and-eclipse-rcp

Gradle and Eclipse RCP
Java
45
star
7

spotless-changelog

The changelog is cast, let the versions fall where they may.
Java
44
star
8

durian-swt

Reactive utilities and fluent builders for SWT
Java
29
star
9

blowdryer

Keep your gradle builds dry å¹²
Java
23
star
10

osgiX

Expose the entire JRE to OSGi using extension bundles
22
star
11

freshmark

Keep your markdown fresh
Java
21
star
12

durian-rx

Reactive getters, powered by RxJava and ListenableFuture
Java
19
star
13

swt-chromium

Exploration repository for SWT-Chromium
Java
14
star
14

rxjava-and-swt

RxJava and SWT: Out with Events, in with FRP
Java
13
star
15

jscriptbox

Language-independent scripting environment
Java
8
star
16

JMatIO

Java Matlab IO library - actively maintained as MatFileRW
Java
7
star
17

atplug

AtPlug: Sockets and Plugs without the boilerplate
Kotlin
6
star
18

durian-globals

Globals are useful. Durian makes them testable too.
Java
4
star
19

durian-debug

Utilities for quick 'n dirty debugging and profiling
Java
4
star
20

image-grinder

ImageGrinder: Image manipulation for Gradle
Java
2
star
21

eclipse.platform.swt.binaries

Unofficial mirror the Eclipse SWT binaries repository
HTML
1
star
22

goomph-eclipse-plugin

Example project for using goomph to create an eclipse plugin
Java
1
star
23

gitfromscratch

A tutorial for learning git from scratch
CSS
1
star
24

libxdiff

LibXDiff ported to java
Java
1
star