Giter Site home page Giter Site logo

goomph's Introduction

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:

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.
  • classic makes eclipse projects in the way that gradle <= 4.3 did.
  • 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

goomph's People

Contributors

hacki11 avatar nedtwigg avatar ralfgrossklaus avatar scottresnik avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.